Ich habe ein NSTextField, das ich gerne "as-you-type" Rechtschreibprüfung aktivieren würde. Wenn ich meine Anwendung geladen habe, kann ich dies über die Menüleiste tun & gt; Bearbeiten & gt; Rechtschreibung und Grammatik & gt; Überprüfen Sie die Rechtschreibung beim Eingeben.
Ich möchte, dass diese Option standardmäßig aktiviert wird. Innerhalb von IB kann ich dies für eine NSTextView aktivieren, aber ich möchte NSTextField für diesen Teil der Benutzeroberfläche verwenden.
Danke.
Update: Weiß jemand, ob es möglich ist, die Menüleiste & gt; Bearbeiten & gt; Rechtschreibung und Grammatik & gt; Rechtschreibprüfung während der Eingabe von NSTextField aus dem Objective-C-Code? Es scheint, dass das NSTextField die Option "Rechtschreibprüfung während der Eingabe" unterstützt, aber es gibt keine Möglichkeit, die Option von Obj-C zu aktivieren.
Bearbeiten # 1
Ich habe Folgendes versucht, um das Menü manuell zu aktivieren, und es hat nicht funktioniert:
%Vor%Ist es nicht möglich, den Menübefehl action direkt aufzurufen, anstatt setEnabled zu verwenden: YES?
Das obige gibt das Folgende aus, nicht sicher, warum das Ziel null ist
%Vor%LÖSUNG
Im Folgenden finden Sie die Lösung für dieses Problem, wenn es jemand anders wissen muss. Einige NSLogging haben mir gezeigt, dass nach dem Setzen des NSTextFields auf firstResponder der FirstResponder tatsächlich eine NSTextView enthält, dann können Sie die Schreibweise aktivieren. Ich nehme an, das NSTextField enthält eine NSTextView in den Subviews, die den Responder nimmt, eigentlich sollte dies in der NSTextField-Klasse offen gelegt werden.
%Vor%Sie haben Glück, Apple bietet eine Rechtschreibprüfung Klasse: NSSpellChecker:
Mit dieser Funktion können Sie die Rechtschreibung jedes Mal überprüfen, wenn der Benutzer den Text mit der textdidChange-Delegatmethode aktualisiert.
Sie sagen auch, dass Sie lieber NSTextField als NSTextView verwenden möchten. Warum verwenden Sie nicht einfach eine bearbeitbare NSTextView, in der Sie die toggleAutomaticSpellingCorrection-Eigenschaft festlegen können?
BEARBEITEN:
Um den Wert des Menüeintrags programmatisch zu ändern, tun Sie etwas wie folgt:
%Vor%BEARBEITEN:
Es scheint, dass die obige Methode die Methode nicht so startet, wie sie soll und das Ziel ist NULL (weil der erste Responder nicht gesetzt wurde?). Es ist jedoch möglich, die Nachricht direkt zu senden:
%Vor%Tags und Links objective-c macos cocoa nstextfield spell-checking