UITextChecker类可以自动扫描出文本里的拼写错误。使用这个类的时候,必须先设置目标语言,比方说,en表示英文、en_US表示美国英语,fr_CA表示加拿大法语。语言码由ISO 639-1编码和可选的ISO 3166-1区域码组成。我们可以把目标语言设为en,这样就会以通用的英语字典来检查拼写了,也可以将其设为en_US、en_AU或者en_GB,以美国英语、澳大利亚英语或者英国英语字典来检查拼写。开发者可以从UITextChecker中获取一份数组,它里面列出了可供选用的各种语言。
UITextChecker类能够学习新词(learnWord:)也可以忘记已经学会的词(unlearnWord:),这使程序可以根据用户的需求来定制系统自带的字典。已经学会的那些词都是跨语言使用的,所以,如果向字典中添加了某个人名,那么该名字在每一种语言环境下均可使用,UITextChecker对象也提供了一些实例方法,用来设置拼写检查时可以忽略的词。
可以给NSString添加一个category,通过UITextChecker来检查任意字符串的拼写是否正确:
- (BOOL) isSpelledCorrectly
{
UITextChecker *checker = [[UITextChecker alloc] init];
NSRange checkRange = NSMakeRange(0, self.length);
NSString *language = [[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode];
NSRange range = [checker rangeOfMisspelledWordInString:self range:checkRange startingAt:0 wrap:NO language:language];
return (range.location == NSNotFound);
}