这是我的小测试应用程序的布局:
AppDelegate
拥有WindowController
。WindowController
拥有CustomTextContainerView
。CustomTextContainerView
拥有NSScrollView
嵌入MyCustomTextView
(NSTextView
子类)。标准MainMenu
和我的窗口控制器的xib相对空。我的窗口控制器的-windowDidLoad
看起来像这样:
- (void)windowDidLoad {
[super windowDidLoad];
// create CustomTextContainerView
[[self window] setContentView:self.customTextContainerView];
}
我正在尝试做的是设置第一响应者到textView,但我已经尝试了一切我能想到的工作。
我已经CustomTextContainerView
将-becomeFirstResponder
转发到其textView上。我已经尝试直接在容器和textView上调用它,但我不能让它自动成为第一响应者。
注意:用户仍然可以在文本区域中单击并开始输入,但我要做的是自动设置第一响应者状态,所以在开始之前我不必单击打字。我错过了什么?
答案 0 :(得分:7)
要强制窗口的第一个响应者,请调用:
[[self window] makeFirstResponder:self.customTextContainerView];
(这假定启用了第一响应者状态所需的所有其他内容,例如视图无法覆盖acceptsFirstResponder
以返回NO
。)