添加和删​​除视图时出现问题标签到字段

时间:2011-05-30 02:33:02

标签: objective-c cocoa macos nsview

我有一个包含NSSearchField的范围栏。可以使用菜单项显示和隐藏栏。我通过创建一个新的NSViewController(并从XIB加载一个新视图)生成此栏。显示栏时,我在窗口的 contentView 中执行 addSubview:;当条形图被隐藏时,我将 removeFromSuperview 移动到视图控制器中的视图。

如果我启动应用程序并且栏已经打开,则点击标签会在窗口中的主视图(表格视图)和范围栏中的搜索字段之间切换。如果我启动应用程序并且条形图尚未显示,一旦我显示条形图,我可以从表格视图到搜索字段,但不是相反。

首次删除范围栏后,再次显示,无论当前选择哪个视图,我都无法再在搜索字段和表格视图之间切换。

除了 addSubview: removeFromSuperview 之外,我还需要做些什么吗?我无法理解为什么这不起作用,特别是如果在发布时显示条形图,我会得到不同的行为。

2 个答案:

答案 0 :(得分:3)

如果要控制按Tab键时会发生什么,则需要设置两个视图的nextKeyView

[yourTableView setNextKeyView:yourSearchField];
[yourSearchField setNextKeyView:yourTableView];

但是,您需要小心,因为您可以打破自动构造的键视图循环。 This article详细介绍了如何处理这种情况。

答案 1 :(得分:1)

通过在视图窗口中将 setAutorecalculatesKeyViewLoop:设置为true,我能够获得所需的行为。