Скрыть панель навигации и панель инструментов в режиме просмотра с помощью UIGestureRecognizer, который содержит UIWebView и UIImage

#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