【问题标题】:NSTextView won't become first responderNSTextView 不会成为第一响应者
【发布时间】:2012-07-15 01:20:49
【问题描述】:

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

  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];
}

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

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

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

【问题讨论】:

    标签: cocoa nstextview first-responder


    【解决方案1】:

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

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

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

    【讨论】:

    • 解决方案(我实际上是独立找到的:))最终是在窗口上调用它将我的容器视图添加为窗口@987654324 的子视图的组合@ 而不是将其设置为 contentView.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    相关资源
    最近更新 更多