NSTextView 不会成为第一响应者
Posted
技术标签:
【中文标题】NSTextView 不会成为第一响应者【英文标题】:NSTextView won't become first responder 【发布时间】:2012-07-15 01:20:49 【问题描述】:这是我的小测试应用程序的布局:
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 上调用它,但我不能让它自动成为第一响应者。
注意:用户仍然可以单击文本区域并开始输入,但我要做的是自动设置第一响应者状态,因此我不必在开始之前单击打字。我错过了什么?
【问题讨论】:
【参考方案1】:要强制窗口的第一响应者,调用这个:
[[self window] makeFirstResponder:self.customTextContainerView];
(这假设所有其他必要的第一响应者状态都已启用,例如,视图不能覆盖 acceptsFirstResponder
以返回 NO
。)
【讨论】:
解决方案(我实际上是独立找到的:))最终是在窗口上调用它和将我的容器视图添加为窗口@987654324 的子视图的组合@ 而不是将其设置为 contentView.以上是关于NSTextView 不会成为第一响应者的主要内容,如果未能解决你的问题,请参考以下文章
当新的 NSTextView 成为 FirstResponder (MacOS) 时如何移动光标?