我有一个包含NSSearchField的范围栏。可以使用菜单项显示和隐藏栏。我通过创建一个新的NSViewController(并从XIB加载一个新视图)生成此栏。显示栏时,我在窗口的 contentView 中执行 addSubview:;当条形图被隐藏时,我将 removeFromSuperview 移动到视图控制器中的视图。
如果我启动应用程序并且栏已经打开,则点击标签会在窗口中的主视图(表格视图)和范围栏中的搜索字段之间切换。如果我启动应用程序并且条形图尚未显示,一旦我显示条形图,我可以从表格视图到搜索字段,但不是相反。
首次删除范围栏后,再次显示,无论当前选择哪个视图,我都无法再在搜索字段和表格视图之间切换。
除了 addSubview:和 removeFromSuperview 之外,我还需要做些什么吗?我无法理解为什么这不起作用,特别是如果在发布时显示条形图,我会得到不同的行为。
答案 0 :(得分:3)
如果要控制按Tab键时会发生什么,则需要设置两个视图的nextKeyView
。
[yourTableView setNextKeyView:yourSearchField];
[yourSearchField setNextKeyView:yourTableView];
但是,您需要小心,因为您可以打破自动构造的键视图循环。 This article详细介绍了如何处理这种情况。
答案 1 :(得分:1)
通过在视图窗口中将 setAutorecalculatesKeyViewLoop:设置为true,我能够获得所需的行为。