Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSTextField是第一个响应程序,但在键入之前,我仍然必须在文本框内单击_Objective C_Cocoa_Nsview_Nstextfield_First Responder - Fatal编程技术网

Objective c NSTextField是第一个响应程序,但在键入之前,我仍然必须在文本框内单击

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

我的最终目标是在默认情况下选择一个NSTextField,使用户无需首先单击文本字段即可开始键入

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

在视图控制器的awakeFromNIB内部,我有以下代码:

[[[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]主窗口]第一响应者]类]);}