Muszę znaleźć ramkę pikseli dla różnych zakresów w widoku tekstowym. Używam do tego celu - (CGRect)firstRectForRange:(UITextRange *)range;
. Jednak nie mogę się dowiedzieć, jak faktycznie utworzyć UITextRange
.Utwórz UITextRange z NSRange
Zasadniczo jest to co szukam:
- (CGRect)frameOfTextRange:(NSRange)range inTextView:(UITextView *)textView {
UITextRange*range2 = [UITextRange rangeWithNSRange:range]; //DOES NOT EXIST
CGRect rect = [textView firstRectForRange:range2];
return rect;
}
Apple mówi jeden ma podklasy UITextRange
i UITextPosition
w celu przyjęcia protokołu UITextInput
. Nie robię tego, ale mimo to próbowałem, postępując zgodnie z przykładowym kodem doktora i przekazując podklasę do firstRectForRange
, co spowodowało awarię.
Jeśli jest łatwiejszy sposób dodawania różnych kolorowych UILables
do tekstu, proszę powiedz mi. Próbowałem używać UIWebView z content editable
ustawionym na PRAWDA, ale nie lubię komunikować się z JS, a kolorowanie jest jedyną rzeczą, której potrzebuję.
Z góry dziękuję.
Musisz mieć podklasę "UITextRange", aby móc ją ustawić. Jedynym sposobem na ustawienie właściwości "UITextRange" jest uzyskanie dostępu do ich podklasy. Definiuje on 'start' i' end' jako właściwości, ale można je ustawić wewnętrznie, odwołując się do '_start' i' _end'. – Justin
Tak, ale jak utworzyć UITextPosition, która nie ma żadnych właściwości? Jeśli tak samo podklasuję, to w jaki sposób "firstRectForRange" może wiedzieć, której właściwości użyć z mojej podklasy UITextPosition? –
To jest coś, czego nie wiem. Wiem tylko, że musisz podklasować, aby ustawić właściwości 'readonly'. Dlatego jest to komentarz zamiast odpowiedzi. – Justin