下一个 KeyView 按 Tab 键转到 NSBrowser 和工具栏中的搜索视图



我在Mac OS X应用程序中要求用户能够在单个窗口中的以下项目之间进行切换,

  • 工具栏中的 NSSearchField
  • NSBrowser
  • NSCollectionView
  • NSCollectionView (第二个(
  • NSComboBox

当用户仅在文本框和列表之间具有 Tab 键时。由于某种原因,NSBrowser似乎不算作一个列表,工具栏中的NSSerachField似乎不算作一个文本框。但是如果我移动选项卡,我可以在 NSSerachField 中向后移动选项卡

如果我将控件设置之间的选项卡更改为所有控件之间的选项卡,NSBrowser的选项卡也是如此,但是我有一个单独的问题,您无法跳出NSSearchField。我假设这意味着我的下一个 KeyView 链是正常的,或者当启用所有控件之间的选项卡时,下一个 KeyView 值只是完全忽略。

我在界面构建器中设置了下一个键视图。

有没有办法让Mac OS将NSBrowser视为一个列表,我已经在对NSBrowser进行子类化了。如果文本框在工具栏中,则无法按 Tab 键进入是否有原因。

另外一个问题是,NSBrowser和第一个NSCollectionView位于NSTabView中,第二个NSCollectionView也在NSTabView中,NSTabViews动态地添加和删除NSTabeViewItems,因此内容有点像文档。我已将 NSTabViews 设置为下一个 KeyView,然后在将 NSTabViewItems 添加到 NSTabView 后立即设置了初始 FirstResponder。我还为NSBrowser设置了nextKeyView,以切换到NSCollectionView。窗口的初始FirstResponder设置为第一个NSTabView。

附加信息我有自动重新计算KeyViewLoop到NO。我已经设法让它暂时工作,通过在代码中设置下一个响应者,但随后似乎发生了一些事情,Cocoa 去改变了这一切。

我发现的唯一解决方案是子类NSWindow并覆盖selectKeyViewPrecedingView:和selectKeyViewFollowView:,我们有这种奇怪的动态将NSTabViewItems添加到NSTabView,我认为这可能会破坏默认功能。

此解决方案不能解决从 NSSearchField 中跳出 Tab 键的问题,这可能使用户可以触发搜索操作,因此在 NSSearchField 中的制表符不会落入窗口,我可能最终会子类化 NSSearchField。

这些解决方案有点黑客,我宁愿只使用Apple的默认功能,但这不是一个选择。

相关内容

  • 没有找到相关文章

最新更新