我有一个来自服务器的字符串,我在UILabel multiligne上显示。它在该字符串中,我正在识别一些特定的子字符串。我想在子字符串上放置一个按钮(按钮将是UILabel的子视图)。为此,我需要子串坐标。我经历过这个,但我无法理解。假设我的完整字符串是abc,567-324-6554,纽约。我希望567-324-6554显示在我需要其坐标的按钮上。 如何使用上面的链接查找子串的坐标? 谢谢,
答案 0 :(得分:7)
UILabel
没有任何方法可以执行此操作。您可以使用UITextView
执行此操作,因为它实现了UITextInput
protocol。您需要将文本视图的editable
属性设置为NO
。
像这个未经测试的代码应该有效:
- (CGRect)rectInTextView:(UITextView *)textView stringRange:(CFRange)stringRange {
UITextPosition *begin = [textView positionFromPosition:textView.beginningOfDocument offset:stringRange.location];
UITextPosition *end = [textView positionFromPosition:begin offset:stringRange.length];
UITextRange *textRange = [textView textRangeFromPosition:begin toPosition:end];
return [textView firstRectForRange:textRange];
}
那应该返回CGRect
(在文本视图的坐标系中),它覆盖stringRange
指定的子字符串。如果将按钮设置为文本视图的子视图,则可以将按钮的框架设置为此矩形。
如果子串跨越多行,则矩形将仅覆盖第一行。