3

我正在开发一个应用程序,该应用程序提供一个包含许多 NSTextField 的 NSPopover。虽然我可以按预期在这些字段之间切换,但弹出框正在选择一个特定的文本字段,当它出现时处于编辑状态,这不是我要编辑的字段;我希望能够以编程方式(或在界面生成器中)定义弹出框外观上正在编辑的文本字段。我怎样才能做到这一点?

我已经通过为所有涉及的各种文本字段连接 IB 插座来设置适当的键视图循环,并且我已经将弹出框的nextResponder属性连接到我想首先编辑的文本字段,但这似乎没有效果 - 弹出框仍将选择其首选文本字段而不是我的。Window Programming Guide建议我将窗口的出口设置initialFirstResponder为我想要选择的视图,但是 NSPopover 不是 NSWindow 并且没有initialFirstResponder属性(除非我遗漏了一些明显的东西)。

当出现 NSPopover 时,有什么方法可以指定我要编辑的 NSTextField 吗?

4

2 回答 2

4

我想你说你尝试使用-makeFirstResponder:和传递文本字段。这将设置窗口的firstResponder,但这initialFirstResponder与窗口必须initialFirstResponder设置为不同的,而不是nil为了尊重关键视图循环。( Source ) 对您尝试的内容进行轻微调整对我有用:

- (void)popoverWillShow:(NSNotification *)notification
{
    // Set the window's initialFirstResponder so that the key view loop isn't auto-recalculated.
    [[myField window] setInitialFirstResponder:myField];
}
于 2013-11-28T12:34:39.330 回答
0

我认为您可以通过将所有您不想关注的文本字段设置为“可选择”而不是 IB 中的“可编辑”来完成这项工作,这应该将您想要开始的一个文本字段作为第一响应者. 然后,在您的 popoverDidShow: 方法中,将它们全部设置回可编辑状态,您应该能够像往常一样在它们之间切换。

于 2012-09-27T02:37:11.710 回答