(iPhone) selectedRange для нередактируемого UITextView (или других методов обработки кликов?)
Я использую UITextView
для хранения статического содержимого (на китайском языке это означает, что все символы имеют фиксированную ширину). Я хочу позволить пользователям нажимать на символ в тексте и выводить словарную информацию для этого символа. Я знаю все проблемы, связанные с отсутствием копирования и вставки, и все такое, но я надеюсь, что найдется способ сделать это, не дожидаясь прошивки iPhone 3.0.
Сначала я подумал об использовании UITextView
s selectedIndex
имущество. К сожалению, когда UITextView
не редактируется, следующий код в UITextView
всегда возвращает длину всего текстового блока:
NSRange touchPoint = self.selectedRange;
NSLog(@"Selection: %d", touchPoint.location);
Это имеет смысл, я полагаю, как и в случае нередактируемого UITextView
нет способа выбрать точку вставки, но это мне не поможет.:)
Другой подход заключается в том, чтобы рассчитать, используя тот факт, что текст на китайском языке имеет фиксированную ширину, где клик приземлился и какой текст должен находиться под этим местоположением в данный момент, но это усложняется пунктуацией, которая может привести к раннему переносу строки, в результате чего предшествующие символы вниз по строке.
Есть ли другой способ узнать, какой текст находится под сенсорным событием, которое я пропускаю?
1 ответ
Позвоните по следующему, прежде чем просить selectedRange
:
[[textView webView] updateSelectionWithPoint:point];
Примечание: оба -webView
а также -updateSelectionWithPoint:
являются частными API. Вы можете также выполнить эквивалентное поведение, переключая редактируемый режим, становясь первым респондентом и отправляя поддельные события касания, но это было бы гораздо больше работы