2012-02-14 105 views
6

我有一個字符串來自我在UILabel multiligne上顯示的服務器。它在這個字符串中,我正在識別一些特定的子字符串。我想在該子字符串上放置一個按鈕(按鈕將是UILabel的子視圖)。爲此,我需要子串座標。我經歷了這個,但我無法理解它。假設我的完整字符串是abc,567-324-6554,紐約。我想要567-324-6554顯示在我需要它的座標的按鈕上。 如何使用上面的鏈接查找子串的座標? 謝謝,在uilabel中找到文本的位置{x,y}

+1

中的UILabel是multiligne – freind 2012-02-14 08:46:13

回答

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指定的字符串。如果將按鈕設置爲文本視圖的子視圖,則可以將該按鈕的框架設置爲此矩​​形。

如果子字符串跨越多行,矩形將只覆蓋第一行。

+0

我想找到在UITextView中這個字符串「***」的X和Y u能幫助我THX兄弟 – freind 2012-02-14 09:10:59

+2

閱讀我的答案。 – 2012-02-14 09:13:19

+0

我嘗試這樣做,但它的錯誤CGRect * varf = [self rectInTextView:select4 stringRange:@「***」]; – freind 2012-02-14 09:20:40

相關問題