2012-02-14 13 views
6

UILabel multiligneに表示しているサーバーからの文字列があります。その文字列の中に、私は特定の部分文字列を特定しています。その部分文字列にボタンを配置したい(ボタンはUILabelのサブビューになります)。このためには、部分文字列座標が必要です。私はこれを通過しましたが、私はそれを理解することができません。私の完全な文字列がニューヨークの567-324-6554であるとします。私はその座標が必要なボタンに567-324-6554を表示します。 上記のリンクを使用して部分文字列の座標を見つけるにはどうすればよいですか? ありがとう、uilabelのテキストの場所{x、y}を見つける

+1

UILabelはmultiligne – freind

答えて

7

UILabelこれを行う方法はありません。 UITextInput protocolが実装されているため、UITextViewとすることができます。テキストビューの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]; 
} 

stringRangeで指定された部分文字列をカバーCGRect(テキストビューの座標系で)を返す必要があります。ボタンをテキストビューのサブビューにすると、ボタンのフレームをこの矩形に設定できます。

部分文字列が複数の行にまたがる場合、その矩形は最初の行のみをカバーします。

+0

私はこの文字列のxとyを見つけたいと思っていますが、UITextViewで "***"と答えると、thxの仲間を助けてくれるのですか? – freind

+2

私の答えをお読みください。 –

+0

私はこれをしようとするが、そのエラーCGRect * varf = [self rectInTextView:select4 stringRange:@ "***"]; – freind

関連する問題