Ich habe eine Mac OS App mit Storyboards (OS X 10.12; Xcode 9). Der View-Controller, an dem ich interessiert bin, ist in einen SplitViewController eingebettet, der in einen SplitViewController eingebettet ist, der der contentViewController des ViewControllers ist, also drei Ebenen tief sitzt.NSTextView: Resign First Responder in Storyboard-App
In diesem View-Controller habe ich ein NSTextField ("title") und ein NSTextView ("body"). Was auch immer ich mache, das NSTextView ist der Ersthelfer, und ich möchte, dass mein NSTextField das erste Element ist, in das der Benutzer eingibt.
Ich habe versucht, NSApplication.shared.mainWindow mit .makeFirstResponder (Titel) in ViewWillAppear (Mainwindow ist immer noch nil in ViewDidLoad, danke, Storyboard), aber es hat keinerlei Auswirkungen: nach diesem Aufruf Körper bleibt der Ersthelfer .
Die Verwendung von body.resignFirstResponder() oder title.becomeFirstResponder() hat ebenfalls keine Auswirkungen (Ich weiß, dass in der Dokumentation steht "Niemals diese Methode direkt aufrufen", aber es musste versucht werden); Der Cursor blinkt weiterhin fröhlich in der Textansicht.
Ich habe es geschafft, einen Hack durch Unterklassenbildung von NSTextView zu erstellen, wobei ich zunächst 'false' von 'acceptsFirstResponder' zurückgab und in der viewDidLoad-Methode von ViewController auf 'true' zurückstelle, aber das ist hässlich und umgeht einfach die Responderkette.
Wie kann ich mein NSTextField als Ersthelfer richtig einstellen, wenn der NSTextView den Hinweis einfach nicht übernehmen will?
Liegt das NSTextField über dem NSTextView? Machst du ihnen etwas, setze den Inhalt, eine Bindung oder etwas? Haben Sie versucht, 'initialFirstResponder' des Fensters zu setzen? – Willeke
Das TextField befindet sich oberhalb und links neben dem TextView, dies macht keinen Unterschied. Ich setze den Inhalt in ViewDidLoad; Ich habe gerade die Reihenfolge umgekehrt, aber das macht keinen Unterschied. InitialFirstResponder ist ein interessanter - ich hatte davon nichts gewusst. Ich habe es in ViewWillAppear (das scheint der erste Ort zu sein, auf den ich das Fenster zugreifen kann), und während es mir in der Konsole sagen wird, dass mein TextField der erste Ersthelfer ist, blinkt der Cursor glücklich in der Textansicht. –
Ich kann dein Problem nicht reproduzieren, es muss etwas sein, das du irgendwo irgendwie machst. – Willeke