Как реализовать сенсорные события в uiwebview? - PullRequest
3 голосов
/ 07 июня 2011

Я пробовал различные решения, представленные на этом сайте и другие, для реализации сенсорных событий в uiwebviewНо я все еще не могу этого сделать.На самом деле, я создал приложение для чтения статей.Здесь я добавил uiwebview к обычному uiview.Теперь я хочу отследить некоторые события касания пользователя в этом конкретном веб-просмотре.Когда я делаю это в обычном режиме, это работает отлично.Но если я попробую это на webview.он перестает работать.Решения, которые я пробовал ранее, включают

  1. , реализующие методы касания, такие как touchbegan, касание сенсорного перемещения отменено

2, реализующие uigesturerecognizer 3, реализующие события касания окна, такие как событие отправки

Теперь, если кто-нибудь может помочь мне или сказать мне, где я делаю что-то не так или новое решение (кроме этого), тогда я буду благодарен.

Ответы [ 2 ]

2 голосов
/ 07 июня 2011

Поместите прозрачный UIVIew поверх вашего UIWebView для захвата касаний. Затем вы можете воздействовать на них или при желании передать их в UIWebView, используя метод удаления touchesBegan.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [self.myUIWebView touchesBegan:touches withEvent:event];
}

Проверьте этот предыдущий пост для деталей: iOS - переслать все касания через представление

0 голосов
/ 28 января 2014

Я вложил в подкласс UIWebView и просто «включил» его распознаватели жестов в подпредставлениях глубиной 2 уровня (вы можете пойти рекурсивно, но этого достаточно для iOS6-7). Затем вы можете делать все, что захотите, с помощью сенсорного местоположения и состояния распознавателя жестов.

for (UIView* view in self.subviews) {
    for (UIGestureRecognizer* recognizer in view.gestureRecognizers) {
        [recognizer addTarget:self action:@selector(touchEvent:)];
    }
    for (UIView* sview in view.subviews) {
        for (UIGestureRecognizer* recognizer in sview.gestureRecognizers) {
            [recognizer addTarget:self action:@selector(touchEvent:)];
        }
    }
}
...