我使用此方法将 NSRange 转换为 CGRect,因为它与 UITextView 相关:
- (CGRect)frameOfTextRange:(NSRange)range inTextView:(UITextView *)textView
{
UITextPosition *beginning = textView.beginningOfDocument;
UITextPosition *start = [textView positionFromPosition:beginning offset:range.location];
UITextPosition *end = [textView positionFromPosition:beginning offset:range.location+range.length];
UITextRange *textRange = [textView textRangeFromPosition:start toPosition:end];
CGRect rect = [textView firstRectForRange:textRange];
return rect;
}
这个问题答案有人和我问同样的问题。上面的方法非常适合这个:
这是一个很棒的文本字段,是的,它是 findthistoken
不太像这样:
this is a great one
(new line)
(new line)
findthistoken
它似乎只是忽略了有两个新行字符的事实? :/
如何使其与新行字符一起使用?
您可以强制 self.textView 立即确保 textView 的布局
[self.textView.layoutManager ensureLayoutForTextContainer:self.textView.textContainer];
将其放在您的frameOfTextRange之前:调用将为您提供正确的矩形。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)