Цель C, как получить числовое значение UITextPosition

Мне нужно получить числовое значение начала и конца диапазона UIText. До сих пор я могу только распечатать описание в виде строки.

Глядя на selectedTextRange, я понимаю, что это может быть структура? Как мне получить элемент структуры?

UITextRange *selectedRange = [myTextView selectedTextRange];

NSLog(@"selectedRange.start %@, selectedRange.end %@ ", selectedRange.start.description, selectedRange.end.description);

Вот описание:

2013-03-26 13:44:03.127 AttributedString[24678:907] selectedRange.start <UITextPosition: 0x1ead8f10, 8, {"Rrrttgh "}, {"gggggh ggg..."}>, selectedRange.end <UITextPosition: 0x1eaf7860, 14, {"...tgh gggggh"}, {" gggg"}> 

2 ответа

Решение

Здесь есть ответ на аналогичный вопрос: UITextPosition to NSRange.

В основном вы звоните -offsetFromPosition:toPosition: на UITextRangeначало и конец, с начальной позицией myTextView.beginningOfDocument,

UITextView соответствует UITextInput, Как часть этого протокола он должен реализовывать и обрабатывать собственные подклассы UITextRange и UITextPosition. Это не структуры, а объекты.

Вы можете получить простую числовую позицию, используя offSetFromPosition:toPosition: и проходя в beginningOfDocument чтобы получить стартовую позицию. Все эти методы будут реализованы UITextView. Вы также можете передать начало и конец диапазона, чтобы узнать длину выделения.

Полная ссылка на протокол здесь.

Другие вопросы по тегам