2013-03-25 2 views
1

У меня есть NSPanel с NSOutlineView для отображения моих данных. Я хочу выбрать строку с первым щелчком внутри NSOutlineView, даже если панель не находится в фокусе (т. Е. Не в ключевом окне). У меня есть делегат, который позволяет выбирать, и я переопределил класс NSOutlineView, чтобы переопределить метод acceptsFirstMouse :, но Я не мог получить первый щелчок.NSOutlineView select с первого щелчка

Я проверил событие mouseDown, и он запускался без каких-либо проблем (в моем классе, который переопределяет), когда панель была и не была ключевым окном. Но когда панель не является ключом, метод NSOutlineViewDelegate долженSelectItem: не вызывается.

Что мне не хватает/не так?

ответ

2

Вам просто нужно создать подкласс ваш NSTableOutlineView и переопределить:

- (BOOL)needsPanelToBecomeKey 

вернуть NO.

NSView ссылочного класса состояния:

переопределены подклассами, чтобы определить, если приемник требует его панели, которые могли бы не стать ключом, чтобы стать ключевым окном, так что он может обрабатывать ввод с клавиатурой и навигации.

Обсуждение

Такой подкласс должен переопределить acceptsFirstResponder вернуть YES.

Этот метод также используется при навигации по клавиатуре. Он определяет, следует ли щелкнуть мышью фокус на просмотр (сделать его первым ответчиком). Некоторые виды захотят получить фокус клавиатуры, когда вы нажмете на них, для полей текстовых полей . Другие взгляды должны фокусироваться только на вкладке , например кнопок. Вы не хотели бы, чтобы фокус смещался от текстового поля , который имеет редактирование в процессе просто потому, что вы нажали на .

Источник: Apple documentation

+0

спасибо! Работал как шарм. – Bikush

Смежные вопросы