2015-12-08 19 views
6

Chcę wyłączyć autokorektę we wszystkich polach tekstowych w mojej aplikacji. Jestem świadomy właściwości autocorrectionType na UITextField. Jednak nie podklasę UITextField, gdy zacząłem rozwijać moją aplikację. Tak więc szukam rozwiązania, aby wyłączyć autokorektę na wszystkich moich TextField za pomocą pojedynczej linii kodu.Wyłączanie autokorekcji dla UITextField w całej aplikacji

Próbowałem za pomocą [UITextField appearance], który pracuje dla wyglądu klawiatury:

[[UITextField appearance] setKeyboardAppearance:UIKeyboardAppearanceDark]; 

Ale nie dla autokorekty, ponieważ następujący wiersz kodu:

[[UITextField appearance] setAutocorrectionType:UITextAutocorrectionTypeNo]; 

Skutkuje wyjątku niespójności:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Please file a radar on UIKit if you see this assertion.' 
+0

Interesujące pytanie. Być może ma to więcej wspólnego z klasą textFieldDelegate niż z samym textField. Czy dodałeś tę klasę? – lukaivicev

+0

Czy mógłbyś rozwinąć proszę? Nie wiesz, co masz na myśli, dodając 'textFieldDelegate'. Zaczynam myśleć, że właściwości autokorekty nie są zaimplementowane w proxy reprezentacji 'UITextField', co jest hańbą: /. Być może powinienem "złożyć radar na UIKit", jak to jest napisane w komunikacie o wyjątku. – Hless

+0

https://developer.apple.com/library/prerelease/tvos/documentation/UIKit/Reference/UITextInputTraits_Protocol/index.html#//apple_ref/occ/intfp/UITextInputTraits/autocorrectionType sprawdź, czy te linki: sprawdź to: http://stackoverflow.com/questions/2474824/iphone-issue-disabling-auto-cap-autocorrect-on-a-uxtxtfield i ten http://stackoverflow.com/questions/827310/disable-auto- korekta-iphone-pola tekstowego – lukaivicev

Odpowiedz

1

Proponuję wybrać podklasę UITextField:

@interface CustomTextField : UITextField 
@end 
@implementation CustomTextField 
- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     // Initialization code 
     [self setAutocorrectionType:UITextAutocorrectionTypeNo]; 

     // same way add all the generalize properties which you require for all the textfields. 
    } 
return self; 
} 

Teraz użyj CustomTextField w całym projekcie (zarówno w kodzie lub w serii ujęć).

Mam nadzieję, że to pomoże.

+0

Dzięki za odpowiedź. Wiem o podklasowaniu, tak naprawdę zastanawiałem się, dlaczego oneliner nie będzie działał (tak jak w przypadku wyglądu klawiatury). Podklasowanie zdecydowanie nie jest rozwiązaniem jednokierunkowym, ponieważ będę musiał zastąpić wszystkie wystąpienia UITextField. – Hless

+0

Może to być spowodowane tym, że właściwość 'AutocorrectionType' nie była uważana za część' UIAppearance' (po prostu nie jest to interfejs użytkownika, wchodzi w zakres User Experience). Natomiast "UIKeyboardAppearance" ma wygląd "interfejsu użytkownika" (widoczny w interfejsie użytkownika). – Mrunal

+0

można to zrobić za pomocą kategorii? – AsimRazaKhan

Powiązane problemy