Предотвращение конфликтов с помощью жеста двух пальцев и UIPageViewController
У меня есть UIViewController
который содержит UIPageViewController
который использует стиль прокрутки. Пользователи могут пролистывать страницы как обычно. Теперь я хочу добавить два пальца UISwipeGestureRecognizer
к внешнему контроллеру представления, который содержит контроллер представления страницы. Я хочу, чтобы пользователи могли одним касанием пальца переключать страницы, а два пролистывания пальцем, чтобы вызвать другое действие. Но по умолчанию, когда вы проводите двумя пальцами, iOS прокручивает страницы и игнорирует жест двумя пальцами. Чтобы это исправить, я установил pageViewController.scrollView.panGestureRecognizer
требовать, чтобы жест смахивания двумя пальцами потерпел неудачу. Затем он распознает оба по желанию, но проблема в том, что он затрудняет быстрое перелистывание страниц одним пальцем, потому что он ожидает сбоя двух пальцев. Он игнорирует большую часть ввода с помощью пролистывания, поэтому вам действительно нужно нажать и удерживать кнопку, прежде чем одним движением пальца переключать страницы. Я также попытался установить жест панорамирования minimumNumberOfTouches
а также maximumNumberOfTouches
в 1
но он ведет себя так же.
Что я мог бы сделать, чтобы это работало хорошо, чтобы распознавать только два пальца при проведении двумя пальцами, но не задерживать распознавание одного пальца для переключения страниц?
1 ответ
Прежде всего, вы должны убедиться, что UISwipeGestureRecognizer
распознать одновременно с panGestureRecognizer
с помощью UIGestureRecognizerDelegate
func gestureRecognizer(UIGestureRecognizer, shouldRecognizeSimultaneouslyWith: UIGestureRecognizer) {
return true
}
Затем, когда метод действия вашего пальца UISwipeGestureRecognizer
называется, сбросьте panGestureRecognizer
вручную.
pageViewController.scrollView.panGestureRecognizer.isEnabled = false
pageViewController.scrollView.panGestureRecognizer.isEnabled = true