2016-02-16 2 views
0

У меня есть требование в приложении Mac OS X для пользователя, чтобы иметь возможность вкладки между пунктом наблюдения в одном окне,nextKeyView обходе к NSBrowser и поиска зрения в панели инструментов

  • NSSearchField внутри панели
  • NSBrowser
  • NSCollectionView
  • NSCollectionView (второй)
  • NSComboBox

, когда пользователь имеет вкладку только между текстовыми полями и списками. По какой-то причине NSBrowser, похоже, не считается списком, а NSSerachField в панели инструментов, похоже, не считается текстовым полем. Но если я сдвигаю вкладку, я могу зайти назад в NSSerachField

Если я изменил вкладку между настройками управления на вкладку между всеми элементами управления, вкладка NSBrowser привязана к табуляции, а также NSSearchField, хотя у меня есть отдельная проблема, а не вкладка из NSSearchField. Я предполагаю, что это означает, что моя цепочка nextKeyView в порядке, или значения nextKeyView полностью игнорируются, когда включена вкладка между всеми элементами управления.

У меня есть следующийKeyViews, установленный в построителе интерфейса.

Есть ли способ заставить Mac OS обрабатывать NSBrowser в качестве списка, я уже являюсь подклассом NSBrowser. И есть ли причина, по которой текстовое поле не может быть включено, если оно находится на панели инструментов.

Дополнительным морщин для этого является то, что NSBrowser и первое NSCollectionView находятся в пределах NSTabView, а второй NSCollectionView также находится в NSTabView, NSTabViews имеют NSTabeViewItems, добавленные и удаленные из них динамически, поэтому содержимое похоже на документы , У меня есть NSTabViews, установленный как nextKeyView, а затем я устанавливаю initialFirstResponder для NSTabViewItems, как только я добавляю их в NSTabView. У меня также есть набор nextKeyView для NSBrowser для перехода к NSCollectionView. И windows initialFirstResponder устанавливается в первый NSTabView.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ У меня есть autorecalculatesKeyViewLoop для NO. Мне удалось заставить его работать временно, создавая код, создавая следующего ответчика, но потом что-то происходит, и Cocoa идет и меняет все.

ответ

0

Единственное решение, которое я нашел, это подкласс NSWindow и переопределить selectKeyViewPrecedingView: и selectKeyViewFollowingView :, у нас есть это странное динамическое добавление NSTabViewItems к NSTabView, и я думаю, что это может сломать функциональность по умолчанию.

Это решение не устраняет проблему с помощью табуляции из NSSearchField, возможно, пользователи могут инициировать действие поиска, и поэтому табуляция в NSSearchField не попадает в окно, я, вероятно, в конечном итоге подклассифицирую NSSearchField ,

Эти решения немного хакер Я бы предпочел просто использовать функциональность Apple по умолчанию, но это просто не вариант.