NSTextView不会成为第一响应者

jbr*_*nan 1 cocoa nstextview first-responder

这是我的小测试应用程序的布局:

  1. AppDelegate拥有WindowController.
  2. WindowController拥有CustomTextContainerView.
  3. CustomTextContainerView拥有一个NSScrollView嵌入MyCustomTextView(NSTextView子类).

标准MainMenu和我的窗口控制器的xib 都相对空.我的窗口控制器-windowDidLoad看起来像这样:

- (void)windowDidLoad {
    [super windowDidLoad];
    // create CustomTextContainerView
    [[self window] setContentView:self.customTextContainerView];
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试做的是将第一个响应者设置为textView,但我已经尝试了我能想到的所有内容以使其工作.

我做了这么CustomTextContainerView只是转发-becomeFirstResponder到其TextView的.我已经尝试直接在容器和textView上调用它,但我不能让它自动成为第一响应者.

注意:用户仍然可以单击文本区域并开始键入,但我要做的是自动设置第一响应者状态,因此在开始键入之前我不必单击.我错过了什么?

Kev*_*ant 7

要强制窗口的第一个响应者,请调用:

[[self window] makeFirstResponder:self.customTextContainerView];
Run Code Online (Sandbox Code Playgroud)

(这假设启用了第一响应者状态所需的所有其他内容,例如视图无法覆盖acceptsFirstResponder以返回NO.)