#objective-c #ios #uiwebview #uigesturerecognizer
#objective-c #iOS #uiwebview #uigesturerecognizer
Вопрос:
Я создаю UIViewController с UIImageView, 2xUIWebView.
Я пытаюсь скрыть UINavigationBar и UIToolbar с помощью UITapGestureRecognizer, это без проблем, но когда я добавил в ViewController UIWebView, он перестал работать. В «UIWebView youtube Player» — у меня есть код, который воспроизводит видео с YouTube. Когда я касаюсь «белой области» или UIImageView — распознаватель жестов работает, но когда я касаюсь UIWebView — ничего не происходит. Помогите мне, пожалуйста, исправить это. Спасибо
Комментарии:
1. Пожалуйста, предоставьте дополнительную информацию. К какому объекту привязан распознаватель жестов? Кроме того, документация UIWebView предупреждает об использовании его в качестве подвида UIScrollView, поскольку события касания могут быть странными. Подобное может происходить и в этом случае, потому что UIWebView не любит, когда другие объекты вмешиваются в его события касания.
Ответ №1:
Если вы добавляете распознаватель жестов в родительское представление, то вы делаете это неправильно. Вместо этого вы должны прикрепить его к WebView.
[self.webView addGestureRecognizer:singleFingerTap];
вместо
[self.view addGestureRecognizer:singleFingerTap];
Ответ №2:
UIWebView состоит из нескольких вложенных представлений, и в вложенные представления уже добавлены некоторые средства распознавания жестов, поэтому, если вы просто добавите средство распознавания жестов в UIWebView, оно не будет обработано, потому что более глубокий UIView в дереве представлений обработает жест первым. Чтобы разрешить одновременную обработку как нового, добавленного средства распознавания жестов, так и встроенного средства распознавания жестов, вам следует принять протокол UIGestureRecognizerDelegate, позволяющий это.
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}
yourTapRecognizer.delegate = self; //add this line with you UIGestureRecognizer alloc/init
более подробную информацию смотрите в этом блоге: Как добавить пользовательский процесс в UIWebView Tap Gestures