3

我的最终目标是默认选择一个 NSTextField,允许用户在不先点击文本字段的情况下开始输入。

我有一个由 NSViewController 控制的视图。该视图包含几个文本字段。NSView 和 NSWindow 都是自定义子类。文本字段没有子类化。只是一个标准的 NSTextField。

在视图控制器的 awakeFromNIB 中,我有代码:

[[[NSApplication sharedApplication] mainWindow] makeFirstResponder:firstBox];
NSLog(@"%@",NSStringFromClass([[[[NSApplication sharedApplication] mainWindow] firstResponder] class]));

文本字段周围有一个焦点环,并且 NSLog 打印出第一响应者是 NSTextField 但我仍然必须在文本字段内单击才能开始输入。

什么可能导致该字段成为第一响应者但不可编辑?有没有更好的方法我应该从中调用 makeFirstResponder ?

4

1 回答 1

7

在 CocoaDev.com 上发现了一个可能有用的提示,尝试这样做:

[[[NSApplication sharedApplication] mainWindow] 
    performSelector: @selector(makeFirstResponder:) 
         withObject: firstBox 
         afterDelay:0.0];
于 2013-09-28T18:28:05.710 回答