【发布时间】:2012-02-25 22:57:04
【问题描述】:
我需要在文本视图中找到不同范围的像素帧。我正在使用- (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;
}
Apple 表示必须继承 UITextRange 和 UITextPosition 才能采用 UITextInput 协议。我不这样做,但我还是尝试了,按照文档的示例代码并将子类传递给 firstRectForRange 导致崩溃。
如果有更简单的方法可以将不同颜色的UILables 添加到文本视图中,请告诉我。我曾尝试使用 UIWebView 并将 content editable 设置为 TRUE,但我不喜欢与 JS 交流,而着色是我唯一需要的。
提前致谢。
【问题讨论】:
-
你必须继承
UITextRange才能设置它。设置UITextRange属性的唯一方法是在子类中访问它们。它将start和end定义为属性,但可以通过引用_start和_end在内部设置它们。 -
是的,但是我如何创建一个根本没有任何属性的 UITextPosition? 0.o 如果我也将其子类化,'firstRectForRange' 怎么知道从我的 UITextPosition 子类中使用哪个属性?
-
那是我不知道的。我所知道的就是你必须子类来设置
readonly属性。这就是为什么这是评论而不是答案。
标签: objective-c ios5 uitextview nsrange