我在Mac OS X应用程序中要求用户能够在单个窗口中的关注项之间进行选项卡,
当用户仅在文本框和列表之间进行选项卡时。出于某种原因,NSBrowser似乎不算作列表,并且工具栏中的NSSerachField似乎不算作文本框。但如果我移动标签,我可以在NSSerachField中向后标签
如果我在所有控件之间将控件设置之间的选项卡更改为选项卡,则NSBrowser会被选中,因此NSSearchField也是如此,但是我有一个单独的问题,你不能跳出NSSearchField。我假设这意味着我的nextKeyView链是正常的,或者只有在启用所有控件之间的选项卡时才完全忽略nextKeyView值。
我在界面构建器中设置了nextKeyView。
我是否可以通过某种方式让Mac OS将NSBrowser视为列表,我已经将NSBrowser子类化了。如果文本框无法在工具栏中显示,那么是否有原因。
另外一个问题是,NSBrowser和第一个NSCollectionView在NSTabView中,第二个NSCollectionView也在NSTabView中,NSTabViews已经动态地添加和删除了NSTabeViewItems,因此内容类似于文档。 我将NSTabViews设置为nextKeyView,然后在将它们添加到NSTabView后立即为NSTabViewItem设置initialFirstResponder。我还为NSBrowser设置了nextKeyView设置到NSCollectionView。并且windows initialFirstResponder被设置为第一个NSTabView。
其他信息 我有autorecalculatesKeyViewLoop到NO。我已经设法让它暂时工作,通过代码设置下一个响应者,但随后似乎发生了一些事情,Cocoa继续改变它。
答案 0 :(得分:0)
我找到的唯一解决方案是继承NSWindow并覆盖selectKeyViewPrecedingView:和selectKeyViewFollowingView:,我们将NSTabViewItems动态添加到NSTabView这个奇怪的动态,我想这可能会打破默认功能。
此解决方案无法解决从NSSearchField跳出的问题,这可能是因为用户可以触发搜索操作,因此NSSearchField中的Tab键不会落入窗口,我很可能最终继承NSSearchField。
这些解决方案有点黑客我宁愿选择苹果默认功能,但这不是一个选项。