Objective c NSTextField是第一个响应程序,但在键入之前,我仍然必须在文本框内单击
我的最终目标是在默认情况下选择一个NSTextField,使用户无需首先单击文本字段即可开始键入 我有一个由NSViewController控制的视图。该视图包含多个文本字段。NSView和NSWindow都是自定义子类。文本字段不是子类。只是一个标准的NSTextField 在视图控制器的awakeFromNIB内部,我有以下代码:Objective c NSTextField是第一个响应程序,但在键入之前,我仍然必须在文本框内单击,objective-c,cocoa,nsview,nstextfield,first-responder,Objective C,Cocoa,Nsview,Nstextfield,First Responder,我的最终目标是在默认情况下选择一个NSTextField,使用户无需首先单击文本字段即可开始键入 我有一个由NSViewController控制的视图。该视图包含多个文本字段。NSView和NSWindow都是自定义子类。文本字段不是子类。只是一个标准的NSTextField 在视图控制器的awakeFromNIB内部,我有以下代码: [[[NSApplication sharedApplication] mainWindow] makeFirstResponder:firstBox]; NSL
[[[NSApplication sharedApplication] mainWindow] makeFirstResponder:firstBox];
NSLog(@"%@",NSStringFromClass([[[[NSApplication sharedApplication] mainWindow] firstResponder] class]));
文本字段周围有一个焦点环,NSLog打印出第一个响应者是一个NSTextField,但在开始键入之前,我仍然必须在文本字段内部单击
什么会导致该字段成为第一响应者但不可编辑?是否有更好的方法可以从中调用makeFirstResponder?我找到了一个,请尝试执行以下操作:
[[[NSApplication sharedApplication] mainWindow]
performSelector: @selector(makeFirstResponder:)
withObject: firstBox
afterDelay:0.0];
当您将文本字段设置为第一响应者时,窗口是否在前面并按键?是。在ApplicationIDFinishLaunching中,我将窗口键和订单放在前面。用户将单击第一个视图上的按钮,该按钮将切换视图控制器并显示问题发生的新视图。这似乎与我在awakeFromNib中创建现场第一响应者有关。如果我创建一个iAction,使NSTextField成为第一个响应者并将其与按钮关联,当我单击按钮时,文本字段将成为第一个响应者并将光标放在其中,我可以立即开始键入。我还尝试使用loadView,但其结果与字段具有焦点环相同,但我无法键入<代码>-(void)加载视图{[super loadView];[[[NSApplication sharedApplication]主窗口]生成第一响应者:第一框];NSLog(@“%@”,NSStringFromClass([[[NSApplication sharedApplication]主窗口]第一响应者]类]);}