我需要在textview中找到不同范围的像素帧.我正在用- (CGRect)firstRectForRange:(UITextRange *)range;
它来做.但是我无法找到如何实际创建一个UITextRange
.
基本上这就是我要找的东西:
- (CGRect)frameOfTextRange:(NSRange)range inTextView:(UITextView *)textView {
UITextRange*range2 = [UITextRange rangeWithNSRange:range]; //DOES NOT EXIST
CGRect rect = [textView firstRectForRange:range2];
return rect;
}
Run Code Online (Sandbox Code Playgroud)
Apple表示必须进行子类化UITextRange
并UITextPosition
采用该UITextInput
协议.我不这样做,但无论如何,我尝试了,遵循doc的示例代码并传递firstRectForRange
导致崩溃的子类.
如果有更简单的方法UILables
可以在textview 中添加不同的颜色,请告诉我.我尝试使用content editable
设置为TRUE的UIWebView ,但我不喜欢与JS通信,并且着色是我唯一需要的东西.
提前致谢.
我正在使用此方法将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;
}
Run Code Online (Sandbox Code Playgroud)
这个问题的答案是有人问我同样的问题.上述方法适用于此:
这是一个伟大的文本领域是的,它是findthistoken
不像这样:
this is a great one
(new line)
(new line)
findthistoken
Run Code Online (Sandbox Code Playgroud)
它似乎完全忽略了有2个新行字符的事实?:/
如何使用新的行字符?