Ho sentito che il correttore ortografico di Apple per UITextView mantiene una sorta di registrazione di ciò che si digita nelle singole applicazioni. Ho un'applicazione sicura in cui il controllo ortografico è una funzionalità utile, tuttavia non voglio che le nuove parole vengano registrate da qualche parte al di fuori della mia applicazione. Qualcuno può farmi riferimento a un documento di riferimento Apple o a una descrizione tecnica di quali informazioni vengono acquisite dal controllo ortografico e dove vengono acquisite anche?Quali informazioni sono archiviate da Spell Checker di iOS?
risposta
non so definitivamente, ma utilizzando fseventer, l'apprendimento della parola "aple" in TextEdit salva quella parola a ~/Library/Spelling/LocalDictionary
. Ignorare una parola sembra non modificare affatto il filesystem, e in effetti, se il documento è chiuso e non salvato, e un nuovo documento con quella parola precedentemente ignorata viene aperto, non viene più ignorato. Ciò è coerente con +learnWord:
come metodo di classe e -ignoreWord:
come metodo di istanza. Quindi, per sicurezza, probabilmente non si può chiamare semplicemente +learnWord:
e invece il proprio backend memorizza in modo persistente/sicuro un elenco di parole ignorate.
Interessante ... fa ipotesiForWordRange: inString: lingua: o completionsForPartialWordRange: inString: lingua: hanno attività FS? In caso contrario, dovrebbe essere possibile scrivere la mia sottoclasse UITextView che esegue il controllo ortografico senza apprendimento. (il mio obiettivo attuale) – BadPirate
Non sono sicuro se questo aiuta molto, ma si poteva fare il controllo ortografico manualmente con la classe UITextChecker, che consente di impostare un elenco di parole ignorati:
- (void)setIgnoredWords:(NSArray *)words
Maggiori informazioni qui: https://developer.apple.com/library/ios/#documentation/UIKit/Reference/UITextChecker_Class/Reference/Reference.html
È inoltre possibile controllare se la parola è stato appreso con:
+ (BOOL)hasLearnedWord:(NSString *)word
Bit correlati qui, ma sarebbe possibile accettare automaticamente tutte le parole errate utilizzando UITextChecker? –
Sì, basta chiamare + learnWord (NSString *) per ogni nuova parola. – danielbeard
Vedo ma dico una parola in un UITextField è errato ad esempio invece di "apple" ha detto "aple". Se chiamo learnWord (NSSString *) lo cambierà automaticamente in "mela"? –
cool question :) – Danra