Mam NSTextField, który chciałbym włączyć sprawdzanie pisowni "jak-ty". Po załadowaniu aplikacji mogę to zrobić z paska menu> Edycja> Pisownia i gramatyka> Sprawdzanie pisowni podczas pisania.Jak włączyć sprawdzanie pisowni w NSTextField na Mac OS X?
Chciałbym, aby ta opcja była domyślnie włączona. Wewnątrz IB mogę włączyć to dla NSTextView, ale chciałbym użyć NSTextField dla tej części interfejsu.
Dziękuję.
Aktualizacja: Czy ktoś wie, czy jest możliwe aby programowo uruchomić z paska menu> Edytuj> Pisownia i gramatyka> Sprawdzanie pisowni podczas opcję na NSTextField z kodem Objective-C? Wygląda na to, że NSTextField obsługuje opcję "Sprawdź pisownię podczas pisania", ale nie ma możliwości włączenia opcji z Obj-C.
Edit # 1
Próbowałem następujących ręcznie włączyć menu i to nie działa:
// 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]];
Czy nie jest możliwe, aby bezpośrednio wywołać działanie elementu menu zamiast używać setEnabled: TAK?
Powyższe wyjścia następujące, nie wiem, dlaczego celem jest null
App[3895:a0f] Menu: <NSMenuItem: 0x100135180 Check Spelling While Typing>
Current language: auto; currently objective-c
App[3895:a0f] Target: (null)
ROZWIĄZANIE
Poniżej znajduje się rozwiązanie tego problemu, jeśli ktoś musi wiedzieć. Niektóre NSLogging pokazał mi, że po ustawieniu NSTextField na firstResponder pierwszyResponder faktycznie zawiera NSTextView, możesz następnie włączyć pisownię. Zakładam, że NSTextField zawiera NSTextView w subviews, które pobiera responder, naprawdę to powinno być ujawnione w klasie NSTextField.
// Focus TextField
[textField becomeFirstResponder];
// Enable Continous Spelling
NSTextView *textView = (NSTextView *)[self.window firstResponder];
[textView setContinuousSpellCheckingEnabled:YES];
Wyświetlany "NSTextView" nazywa się edytorem pól. Jeśli ten rzutowanie 'firstResponder' jest zbyt delikatne, możesz przesłonić' -windowWillReturnFieldEditor: forObject: 'w' NSWindowController' i zmienić tam ustawienia. – ctietze