Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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
Cocoa 在外观上指定在NSPopover内编辑NSTextField_Cocoa_Popover_Nstextfield_First Responder_Nspopover - Fatal编程技术网

Cocoa 在外观上指定在NSPopover内编辑NSTextField

Cocoa 在外观上指定在NSPopover内编辑NSTextField,cocoa,popover,nstextfield,first-responder,nspopover,Cocoa,Popover,Nstextfield,First Responder,Nspopover,我正在开发一个应用程序,它显示一个包含许多NSTextFields的NSPover。虽然我可以像预期的那样在这些字段之间进行制表,但popover正在选择一个特定的文本字段,当它出现时,它将处于编辑状态,并且它不是我想要编辑的字段;我希望能够以编程方式(或在Interface Builder中)定义在popover外观上编辑的文本字段。我该怎么做 我已经通过连接所有涉及的各种文本字段的IB出口设置了相应的键视图循环,并且我已经将popover的nextResponder属性连接到我想首先编辑的文

我正在开发一个应用程序,它显示一个包含许多NSTextFields的NSPover。虽然我可以像预期的那样在这些字段之间进行制表,但popover正在选择一个特定的文本字段,当它出现时,它将处于编辑状态,并且它不是我想要编辑的字段;我希望能够以编程方式(或在Interface Builder中)定义在popover外观上编辑的文本字段。我该怎么做

我已经通过连接所有涉及的各种文本字段的IB出口设置了相应的键视图循环,并且我已经将popover的
nextResponder
属性连接到我想首先编辑的文本字段,但这似乎没有效果-popover仍然会选择它的首选文本字段,而不是我的。建议我将窗口的
initialFirstResponder
出口设置为我想要选择的视图,但nspover不是NSWindow,并且没有
initialFirstResponder
属性(除非我缺少明显的内容)


有没有办法指定在出现NSPOVER时我要编辑哪个NSTextField?

我认为您可以通过将所有不希望焦点的文本字段设置为“可选”而不是IB中的“可编辑”来实现这一点,这应该会留下一个文本字段作为第一个响应者。然后,在popoverDidShow:方法中,将它们全部设置回可编辑状态,您应该能够像往常一样在它们之间进行制表。

我想您说过您尝试使用
-makeFirstResponder:
并传递文本字段。这将设置窗口的
firstResponder
,但这与
initialFirstResponder
不同,并且窗口必须将
initialFirstResponder
设置为
nil
以外的值,以尊重键视图循环。()对你的尝试稍作调整对我有用:

- (void)popoverWillShow:(NSNotification *)notification
{
    // Set the window's initialFirstResponder so that the key view loop isn't auto-recalculated.
    [[myField window] setInitialFirstResponder:myField];
}

我没有时间构建测试,但一旦显示,弹出窗口就是一个窗口。在学员的
popoverDidShow:
中,您是否可以从NSTextField中获得一个
NSWindow
,然后告诉该窗口使用文本字段
makeFirstResponder
?@SmilinBrian:这是我现在使用的解决方法,但是在
-poverdidshow:
中运行它的问题是有一个简短的(但值得注意的)问题在弹出框跳转到我选择的字段之前选择其默认字段的时间段。我还尝试了
-popooverwillshow:
,但是在popover窗口中更改第一响应者似乎在那一点上不起作用-没有进行任何更改。令人沮丧,但有用的信息。对不起,我不能再帮你了。没问题-谢谢你花时间看!