2012-02-14 12 views
6

Mam ciąg pochodzący z serwera, który wyświetlam na multiligne UILabel. Jest w tym ciągu, identyfikuję jakiś konkretny podciąg. Chcę umieścić przycisk na tym podciągu (przycisk będzie wyodrębnieniem z UILabel). Do tego potrzebuję współrzędnych podłańcucha. Przeszedłem przez to, ale nie jestem w stanie tego zrozumieć. Załóżmy, że mój kompletny ciąg to abc, 567-324-6554, Nowy Jork. Chcę, aby 567-324-6554 był wyświetlany na przycisku, dla którego potrzebuję jego współrzędnych. Jak mogę użyć powyższego linku, aby znaleźć współrzędne podłańcucha? Dzięki,znajdź lokalizację {x, y} tekstu w uilabel

+1

UILabel jest multiligne – freind

Odpowiedz

7

UILabel nie ma żadnych metod do tego. Możesz to zrobić za pomocą UITextView, ponieważ implementuje on UITextInput protocol. Będziesz chciał ustawić właściwość widoku tekstu editable na NO.

Coś w tym kodzie nietestowanego powinno działać:

- (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]; 
} 

To powinien zwrócić CGRect (w tekście zobaczyć na układ współrzędnych), który obejmuje podciąg określony przez stringRange. Możesz ustawić ramkę przycisku do tego prostokąta, jeśli zrobisz przycisk w widoku podrzędnym widoku tekstowego.

Jeśli podciągnie obejmuje wiele linii, prostokąt obejmie tylko pierwszą linię.

+0

Chcę znaleźć x i y tego ciągu "***" w UITextView, możesz mi pomóc thx bro – freind

+2

Przeczytaj moją odpowiedź. –

+0

Próbuję to zrobić, ale jego błąd CGRect * varf = [self rectInTextView: select4 stringRange: @ "***"]; – freind

Powiązane problemy