我必须升级一个现有的应用程序,并且需要将其现有的 UI 拆分为单独的 NIB。我计划从为所有拆分的 UI 创建单独的 NIB 和 NSViewController 开始。现在的问题是我的 NSViewController 没有响应键盘 TAB 和 SHFIT+TAB 事件,我只是希望我的 NSViewController 在用户单击 TAB 或 SHIFT+TAB 时在动态加载的 NSViewController 视图中将焦点设置在适当的子控件上。
谢谢,
编辑:以下是我的要求。
我有三个子视图,我需要在我的 MainWindow 占位符 NSBox 中动态加载并使用 NSPopupButton 进行切换。
为了检查,我创建了新的可可应用程序并将一个 NSPopupButton 和 NSBox 添加到 Window 并加入 NSPopupButton 和 NSBox 的出口。
其次,我创建了三个新的 NSViewController,其中三个不同的 NIB 包含单独的自定义视图,其中包含两个或三个 NSTextField 的子控件。
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
}
在主应用程序委托函数中,我将所有三个 NSViewController 添加到一个数组中,然后使用 replaceSubview 交换视图以替换占位符 NSBox 中的视图。
我在所有三个 NSViewController 中添加了以下代码,但我仍然没有通过按 TAB 或 SHIFT+tab 键来关注子控件。
- (void)loadView {
[super loadView];
// store the responder that’s right after the view in the responder chain
NSResponder *nextResponder = [[self view] nextResponder];
// set the view controller (self) as the next responder after the view
[[self view] setNextResponder:self];
// set the stored responder as the next responder after the view controller
[self setNextResponder:nextResponder];
}