1

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

  1. AppDelegate拥有WindowController.
  2. WindowController拥有CustomTextContainerView.
  3. CustomTextContainerView拥有一个NSScrollViewwhich embeds MyCustomTextView(一个NSTextView子类)。

标准和我的窗口控制器的 xibMainMenu都比较空。我的窗口控制器-windowDidLoad看起来像这样:

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

我想要做的是为 textView设置第一响应者,但我已经尝试了我能想到的一切来让它工作。

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

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

4

1 回答 1

8

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

[[self window] makeFirstResponder:self.customTextContainerView];

(这假设所有其他必要的第一响应者状态都已启用,例如视图不能被覆盖acceptsFirstResponder以返回NO。)

于 2012-07-15T04:58:05.913 回答