2015-12-08 14 views
6

Voglio disattivare la correzione automatica su tutti i campi di testo nella mia applicazione. Sono a conoscenza della proprietà autocorrectionType su UITextField. Tuttavia, non ho sottoclasse UITextField quando ho iniziato a sviluppare la mia applicazione. Quindi sto cercando una soluzione per disabilitare la correzione automatica su tutto il mio TextField con una singola riga di codice.Disabilita la correzione automatica per UITextField nell'intera applicazione

Ho provato ad utilizzare [UITextField appearance], che lavora per l'aspetto della tastiera:

[[UITextField appearance] setKeyboardAppearance:UIKeyboardAppearanceDark]; 

Ma non per la correzione automatica, dal momento che la seguente riga di codice:

[[UITextField appearance] setAutocorrectionType:UITextAutocorrectionTypeNo]; 

determina un'eccezione di incoerenza:

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

Interessante domanda. Forse questo ha più a che fare con la classe textFieldDelegate rispetto a textField stesso. Hai aggiunto quella lezione? – lukaivicev

+0

Potresti elaborare per favore? Non sei sicuro di cosa intendi aggiungendo 'textFieldDelegate'. Sto iniziando a pensare che le proprietà di autocorrezione non siano implementate nel proxy di aspetto di 'UITextField', il che è un vero peccato: /. Forse dovrei effettivamente "archiviare un radar su UIKit" come si dice nel messaggio di eccezione. – Hless

+0

https://developer.apple.com/library/prerelease/tvos/documentation/UIKit/Reference/UITextInputTraits_Protocol/index.html#//apple_ref/occ/intfp/UITextInputTraits/autocorrectionType controlla anche questi link: verifica questo fuori: http://stackoverflow.com/questions/2474824/iphone-issue-disabling-auto-cap-autocorrect-on-a-uitextfield e questo http://stackoverflow.com/questions/827310/disable-auto- correzione-di-iphone-text-field – lukaivicev

risposta

1

Vorrei suggerire di andare con la sottoclasse 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; 
} 

Ora usano CustomTextField in tutto il progetto (sia in codice o in storyboard).

Spero che questo aiuti.

+0

Grazie per la risposta. So di sottoclassi, in realtà mi chiedevo perché l'oneliner non funzionasse (come succede con l'aspetto della tastiera). La sottoclasse non è sicuramente una soluzione a una riga poiché dovrò sostituire tutte le occorrenze di UITextField. – Hless

+0

Questo potrebbe essere dovuto al fatto che la proprietà 'AutocorrectionType' non è stata considerata come parte di' UIAppearance' (semplicemente non è un'interfaccia utente, è inclusa in User Experience). Mentre 'UIKeyboardAppearance' è correlato a' UI Appearance' (visibile sull'interfaccia utente). – Mrunal

+0

può essere fatto usando la catagory? – AsimRazaKhan