2010-06-11 6 views
1

У меня есть приложение, которое загружает плагины с собственным пользовательским интерфейсом. В моем приложении AppDelegate есть IBOutlet, называемый ContainerView. Когда загружается плагин, он помещает свой собственный вид (который хранится в xib в комплекте плагинов) в виде контейнера, как показано ниже.
[ContainerView addSubview: viewFromPlugin];Как сделать элементы управления «tabable» при загрузке из плагина в приложении Cocoa?

Когда изображение загружается, все нормально, но когда я нажимаю вкладку, единственными элементами управления, которые получают какой-либо фокус, являются те, что находятся вне ContainerView, и ни один из них внутри не получает фокус.
Я попытался настроить представление контейнера как initialFirstResponder, и я попытался подключить следующийKeyView от последней кнопки в порядке вкладок в ContainerView.

Спасибо.

ответ

2

Я попытался настроить представление контейнера как initialFirstResponder, и я попытался подключить следующийKeyView от последней кнопки в порядке вкладок в ContainerView.

Это то, что вы хотите сделать? Сделать контейнер просмотра ключа? Звучит не так; это похоже на то, что вы хотите, чтобы вид плагина (или вид внутри него) стал ключевым видом.

This section of the Apple documentation explains all of the different aspects of the key view loop. Я считаю, что вы хотите, чтобы либо установить nextKeyView в целях контейнера, а также представлении перед ним, или переопределить nextValidKeyView метод, возможно, вид контейнера обоих. Вы также можете попытаться установить предыдущий вид nextKeyView непосредственно на вид подключаемого модуля nextValidKeyView, полностью перейдя через контейнер.

+0

Я смог переопределить nextKeyView для ContainerView и заставить его заглянуть в представление плагина. Чтобы сделать так, чтобы я вытащил из окна плагина, я подклассифицировал свой последний вид и снова переопределил nextKeyView и заставил его вырваться из представления плагина (используя серию вызовов супервизора). Он работает, но кажется, что это слишком большая часть взлома. Есть идеи? – Randall

+2

На самом деле, реальным решением для этого было щелкнуть небольшую галочку в Interface Builder, в которой говорилось, что «Auto Recalculates View Loop» – Randall

0

Пробовал ли вы использовать метод getFirstResponder в ContainerView?

http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIResponder_Class/Reference/Reference.html#//apple_ref/occ/instm/UIResponder/becomeFirstResponder

классы UIView наследуют от UIResponder.

+0

Вопроситель спрашивает о Какао, а не о Какао-Touch. Обратите внимание, что он спрашивает о том, как реализовать табуляцию между представлениями, а также упоминания свойства nextKeyView, которое имеет только NSView. Нет необходимости явно обрабатывать tabbing; Cocoa делает это для вас, поэтому отправка любого такого сообщения не требуется. Даже если бы это было так, отправив ответчика, сообщение 'getFirstResponder' неверно в Cocoa; вы говорите в окно, чтобы сделать это для вас. –

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

  • Нет связанных вопросов^_^