我的目标是在UITextView中标记所有可见的拼写错误的单词。
低效的算法是使用拼写检查器找到文本中所有拼写错误的单词范围,使用positionFromPosition:inDirection:offset等将它们转换为UITextRange对象,然后使用UITextInput方法firstRectFromRange获得图形矩形。
因此,所有文本-〉拼写错误的单词-〉NSRange集合-〉UITextRange集合-〉CGRect集合-〉评估可见性,绘制可见的单词
问题是,这需要检查所有的文本,并将所有拼写错误的单词转换为图形rect。
因此,我认为要做的事情是找出UITextView中的底层. text的哪些部分是当前可见的。
因此,对于可见文本范围-〉拼写错误的单词-〉NSRange集合-〉UITextRange集合-〉CGRect集合-〉评估可见性,绘制可见的文本
ios - how to find what is the visible range of text in UITextView?中的代码可以作为一种方式来约束要检查的文本部分,但仍然需要测量所有文本,我想这可能会相当昂贵。
有什么建议吗?
2条答案
按热度按时间hsvhsicv1#
因为
UITextView
是UIScrollView
的子类,它的bounds
属性反映了坐标系的可见部分,所以应该可以这样做:这假设了一个从上到下,从左到右的文本布局。如果你想让它适用于其他布局方向,你将不得不更加努力。:)
7kjnsjlb2#
Rob的答案,写在Swift 4中。我添加了一些安全检查。
使用示例,通过点击按钮调用: