我的应用程序使用自己的窗口和iOS中的内置拼写检查器的不同工作流实现自定义拼写检查器。因此,我在主文本输入视图中关闭了更正。这将禁用内置建议,但也会突出拼写错误的单词。iOS:突出显示拼写错误,但禁用建议?
有没有办法保持突出显示,但禁用建议?
我的应用程序使用自己的窗口和iOS中的内置拼写检查器的不同工作流实现自定义拼写检查器。因此,我在主文本输入视图中关闭了更正。这将禁用内置建议,但也会突出拼写错误的单词。iOS:突出显示拼写错误,但禁用建议?
有没有办法保持突出显示,但禁用建议?
你将不得不推出自己的。以下是粗略的(iOS 5及更高版本):
在文本视图顶部放置一个透明背景的视图。
查找文本的可见范围,像这样:
- (NSRange)visibleRangeOfTextView:(UITextView *)textView {
CGRect bounds = textView.bounds;
UITextPosition *start = [textView characterRangeAtPoint:bounds.origin].start;
UITextPosition *end = [textView characterRangeAtPoint:CGPointMake(CGRectGetMaxX(bounds), CGRectGetMaxY(bounds))].end;
return NSMakeRange([textView offsetFromPosition:textView.beginningOfDocument toPosition:start],
[textView offsetFromPosition:start toPosition:end]);
}
在该范围内拼写错误的单词搜索。
使用UITextView firstRectForRange方法查找它们的屏幕坐标。
突出显示任何你想要的方式。
决定何时做,这是作为一个练习的学生急忙:)
您可以使用下面的代码来检查天气印刷文字的正确拼写与否,如果错了,然后突出显示在您的文件这个词
第一进口
#import <UIKit/UITextChecker.h>
-(BOOL)isDictionaryWord:(NSString*)word {
UITextChecker *checker = [[UITextChecker alloc] init];
NSLocale *currentLocale = [NSLocale currentLocale];
NSString *currentLanguage = [currentLocale objectForKey:NSLocaleLanguageCode];
NSRange searchRange = NSMakeRange(0, [word length]);
NSRange misspelledRange = [checker rangeOfMisspelledWordInString:word range: searchRange
startingAt:0 wrap:NO language: currentLanguage ];
return misspelledRange.location == NSNotFound;
}
漂亮的代码,但遗憾的是它并没有解决我的真正的问题。据我所知,在UITextView&c中无法突出显示文本,这就是为什么我想使用内置拼写错误的单词荧光笔 - 我只想禁用内置的拼写检查建议,转而使用我自己的系统。 –
我开始和结束为零在ios 7,但它的工作正常在ios 8.你可以帮我吗? –