2009-09-02 8 views
1

Я заметил в построителе интерфейсов, если я хочу щелкнуть или перетащить с панели библиотеки, мне нужно только щелкнуть по нему один раз, даже если панель библиотеки не имеет текущего фокус.NSTableView отвечает на первый щелчок на панели

Я пытаюсь создать панель, которая ведет себя аналогичным образом.

Есть ли простой способ позволить NSTableView принять клик, даже если в окне нет фокуса?

Спасибо.

ответ

1

Хорошо, я нашел ответ. Внутри от awakeFromNib я называю это: [self setBecomesKeyOnlyIfNeeded: YES];

Кажется, это трюк. Это немного отличается от Interface Builder, когда панель фактически получает фокус одновременно одним щелчком мыши, но делать это именно так, что я искал.

+0

Рад, что это сработало. Мой ответ ниже даст вам фокус одновременно с кликом и будет работать для любого вида, а не только для NSPanels. Но если это соответствует вашим потребностям, то это, очевидно, намного проще и не крадет фокус клавиатуры из текущего keyWindow (это либо хорошо, либо плохо, в зависимости от ваших потребностей). –

+0

Вам нужно было установить что-либо еще в XIB-файле или в коде? Я пытаюсь заставить это работать с NSCollectionView, и я до сих пор терпел неудачу. –

+0

Извините за то, что так долго отвечал ... Я только заметил этот комментарий. Вы пытались «setBecomesKeyOnlyIfNeeded»? Разве это не сработало? – chaimp

1

Ваше мнение должно отменять -acceptsFirstMouse:, чтобы вернуть ДА (или оценить пройденное вами событие, чтобы определить, что возвращать). Для этого вам, конечно, придется подкласс NSTableView.

+0

Мне не пришлось этого делать, но просто установил свойство «становитсяKeyOnlyIfNeeded» на панели, в которой находился стол. Но спасибо за ответ. – chaimp

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