我的目标是在UITextView中标记所有可见的拼写错误的单词.
低效算法是使用拼写检查器查找文本中所有拼写错误的单词范围,使用positionFromPosition:inDirection:offset等将它们转换为UITextRange对象,然后使用UITextInput方法firstRectFromRange获取图形.
因此所有文本 - >拼写错误的单词 - > NSRange集合 - > UITextRange集合 - > CGRect集合 - >评估可见性,绘制可见的
问题是,这需要检查所有文本,并将所有拼写错误的单词转换为图形.
因此,我想要走的路是以某种方式找出UITextView中当前可见的底层.text的哪些部分.
因此,对于文本范围可见 - >拼写错误的单词 - > NSRange集合 - > UITextRange集合 - > CGRect集合 - >评估可见性,绘制可见的
ios中的代码- 如何在UITextView中查找文本的可见范围?可以作为一种方式来限制要检查的文本的哪些部分,但仍然要求测量所有文本,我认为这可能是非常昂贵的.
有什么建议?
rob*_*off 18
由于UITextView是子类UIScrollView,其bounds属性反映了其坐标系的可见部分.所以像这样的东西应该工作:
- (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]);
}
Run Code Online (Sandbox Code Playgroud)
这假设从上到下,从左到右的文本布局.如果您想使其适用于其他布局方向,则必须更加努力.:)
| 归档时间: |
|
| 查看次数: |
4107 次 |
| 最近记录: |