Преобразовать местоположение нажатия в UIWebView в постучал символ - PullRequest
0 голосов
/ 14 марта 2012

Я использую UIWebView для отображения текста со встроенными ссылками в моем приложении.У меня есть метод, который обнаруживает касания в UIWebView, но я хочу выяснить, как определить, какой символ / часть текста в заметке была нажата.

Когда пользователь нажимает, текст,он откроет UITextView с тем же текстом, и я бы хотел поместить курсор в позицию крана.

Пока что я понял, как получить X и YПозиция выглядит следующим образом:

 NSInteger xInt = [x integerValue];
 NSInteger yInt = [y integerValue] + (int)webView.scrollView.contentOffset.y;

Я также получил следующий текст:

UILabel *noteTextLabel = [[UILabel alloc] init];
noteTextLabel.font = [UIFont systemFontOfSize:TEXT_FONT_SIZE_LARGE];
noteTextLabel.text = note.text;

Как определить, какой символ был нажат, основываясь на позициях X и Y?

Ответы [ 2 ]

0 голосов
/ 14 марта 2012

Я разобрался, как это сделать, исходя из этого вопроса .

В viewController, который загружен UITextView, я передаю атрибут с именем pointForCursor, который CGPoint, с X и Y, как упомянуто выше.

Затем в viewWillAppear я запускаю следующее:

if (self.pointForCursor.x > 0) {
        NSLog(@"Should have point for cursor");
        UITextPosition *position=[noteTextView closestPositionToPoint:pointForCursor];
        [noteTextView setSelectedTextRange:[noteTextView textRangeFromPosition:position toPosition:position]];
}

ПРИМЕЧАНИЕ. Мой UIWebView и этот UITextView используют шрифт одинакового размера, поэтому проблем не было.

0 голосов
/ 14 марта 2012

Вы можете встроить некоторый javascript / jQuery в UIWebView для обнаружения кликов (Google, как определять клики на веб-странице), как только вы узнаете, какой элемент div был прослушан, сохраните его содержимое в известном месте, как скрытый div на странице, затем распакуйте его, используя

[webView stringByEvaluatingJavaScriptFromString:@"getClickedDivContents()"];

, который будет плевать на текст вашего секретного div

...