我有一个macOS应用程序使用故事板(OSX 10.12; Xcode 9)。我感兴趣的视图控制器嵌入在SplitViewController中,该视图嵌入SplitViewController中,该ViewViewController是主ViewController的contentViewController,因此它坐落在三层深处。NSTextView:辞去故事板应用程序中的第一个响应者
在此视图中的控制器,我有一个的NSTextField( “标题”)和NSTextView( “正文”)。无论我做什么,NSTextView都是第一个响应者,我希望我的NSTextField成为用户输入的第一个项目。
我一直在使用NSApplication.shared.mainWindow试图.makeFirstResponder(标题) 在viewWillAppear中(主窗口仍然是零在viewDidLoad中;感谢,故事板),但它没有任何作用:调用此之后,身体仍然是第一个响应。 (我知道文档说“不要直接调用这个方法”,但它不得不尝试);但是,如果使用body.resignFirstResponder()或title.becomeFirstResponder()光标在文本视图中继续快速闪烁。
我设法通过继承NSTextView来创建一个hack,最初从'accepterFirstResponder'返回false并将其设置回到'true',但这很丑陋,只是回避了响应者链。
什么设置我的NSTextField作为第一个响应时NSTextView只是不希望心领神会的正确方法是什么?
是在NSTextView以上的NSTextField?你对他们做了什么,设定内容,装订或其他?你有没有尝试设置窗口的'initialFirstResponder'? – Willeke
TextField在TextView的左上方,这没有什么区别。我在ViewDidLoad中设置内容;我刚刚逆转了顺序,但这没有什么区别。 initialFirstResponder是一个有趣的 - 我不知道这一点。我已经在ViewWillAppear中设置了它(这似乎是我可以访问窗口的第一个地方),虽然它会在控制台中告诉我,我的textField是最初的第一响应者,但光标在textView中愉快地闪烁。 –
我不能重现你的问题,它肯定是你以某种方式做某事的地方。 – Willeke