相关疑难解决方法(0)

从NSRange创建UITextRange

我需要在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表示必须进行子类化UITextRangeUITextPosition采用该UITextInput协议.我不这样做,但无论如何,我尝试了,遵循doc的示例代码并传递firstRectForRange导致崩溃的子类.

如果有更简单的方法UILables可以在textview 中添加不同的颜色,请告诉我.我尝试使用content editable设置为TRUE的UIWebView ,但我不喜欢与JS通信,并且着色是我唯一需要的东西.

提前致谢.

objective-c uitextview nsrange ios5

48
推荐指数
4
解决办法
3万
查看次数

当混合中出现新行字符时,UITextView firstRectForRange无法正常工作

我正在使用此方法将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个新行字符的事实?:/

如何使用新的行字符?

uitextview ios nsrange

2
推荐指数
1
解决办法
1326
查看次数

标签 统计

nsrange ×2

uitextview ×2

ios ×1

ios5 ×1

objective-c ×1