Wie aktiviere ich die Rechtschreibprüfung in einem NSTextField unter Mac OS X?

Ich habe ein NSTextField, mit dem ich die Rechtschreibprüfung bei der Eingabe aktivieren möchte. Wenn ich meine Anwendung lade, kann ich dies über die Menüleiste> Bearbeiten> Rechtschreibung und Grammatik> Rechtschreibung während der Eingabe prüfen.

Ich möchte, dass diese Option standardmäßig aktiviert ist. Innerhalb von IB kann ich dies für eine NSTextView aktivieren, möchte aber NSTextField für diesen Teil der Benutzeroberfläche verwenden.

Vielen Dank

Aktualisieren Weiß jemand, ob es möglich ist, die Menüleiste> Bearbeiten> Rechtschreibung und Grammatik> Rechtschreibprüfung während der Eingabe im NSTextField über Objective-C-Code programmgesteuert auszuführen? Es scheint, dass NSTextField die Option "Rechtschreibprüfung während der Eingabe" unterstützt. Es gibt jedoch keine Möglichkeit, die Option von Obj-C aus zu aktivieren.

Edit # 1

Ich habe Folgendes versucht, um das Menü manuell zu aktivieren, aber es hat nicht funktioniert:

// Focus TextField
[textField becomeFirstResponder];

// Enable Spell Checking
NSMenu *mainMenu = [[NSApplication sharedApplication] mainMenu];
NSMenu *editMenu = [[mainMenu itemWithTitle:@"Edit"] submenu];
NSMenu *spellingMenu = [[editMenu itemWithTitle:@"Spelling and Grammar"] submenu];
NSMenuItem *autoSpellingMenuItem = [spellingMenu itemWithTitle:@"Check Spelling While Typing"];
[autoSpellingMenuItem setEnabled:YES];

NSLog(@"Menu: %@", [autoSpellingMenuItem description]);
NSLog(@"Target: %@", [[autoSpellingMenuItem target] description]);

// Actually perform menu action
[[autoSpellingMenuItem target] performSelector:[autoSpellingMenuItem action]];

Ist es nicht möglich, den Menüpunkt action direkt aufzurufen, anstatt setEnabled zu verwenden: YES?

Der obige Befehl gibt Folgendes aus, nicht sicher, warum das Ziel null ist

App[3895:a0f] Menu: <NSMenuItem: 0x100135180 Check Spelling While Typing>
Current language:  auto; currently objective-c
App[3895:a0f] Target: (null)

LÖSUN

Below ist die Lösung für dieses Problem, wenn es jemand anderes wissen muss. Einige NSLogging haben mir gezeigt, dass nach dem Setzen von NSTextField auf firstResponder der firstResponder tatsächlich eine NSTextView enthält, mit der Sie die Rechtschreibung aktivieren können. Ich nehme an, das NSTextField enthält eine NSTextView in den Unteransichten, die den Responder übernimmt. Eigentlich sollte diese in der NSTextField-Klasse verfügbar gemacht werden.

// Focus TextField
[textField becomeFirstResponder];

// Enable Continous Spelling
NSTextView *textView = (NSTextView *)[self.window firstResponder];
[textView setContinuousSpellCheckingEnabled:YES];

Antworten auf die Frage(4)

Ihre Antwort auf die Frage