2017-02-01 11 views
0

У меня есть UIViewController, который содержит UIPageViewController, который использует стиль прокрутки. Пользователи могут прокручивать страницы, как обычно. Теперь я хочу добавить два пальца UISwipeGestureRecognizer к контроллеру внешнего вида, содержащему контроллер просмотра страницы. Я хочу, чтобы пользователи имели возможность прокручивать пальцы, чтобы переключаться между страницами и двумя пальцами, чтобы вызвать другое действие. Но по умолчанию, когда вы проведите пальцем двумя пальцами, iOS прокручивает страницы и игнорирует два пальца. Чтобы исправить это, я установил pageViewController.scrollView.panGestureRecognizer, чтобы потребовать, чтобы два жестовых салфетки пальца потерпели неудачу. Затем он распознает оба по желанию, но проблема заключается в том, что он затрудняет прохождение пальца по страницам быстро, потому что он ждет, пока два пальца не пройдут. Он игнорирует много ваших входных данных салфетки, поэтому вам действительно нужно прикоснуться и удерживать на мгновение, прежде чем вы проведете один палец, чтобы переключать страницы. Я также попробовал установить minimumNumberOfTouches и maximumNumberOfTouches на, но он ведет себя одинаково.Избегайте конфликтов с жестом пальца с двумя пальцами и UIPageViewController

Что я могу сделать, чтобы сделать эту работу хорошо, только распознать два пальца при прокручивании двумя пальцами, но не задерживать распознавание одного пальца для переключения страниц?

ответ

0

Прежде всего, вам необходимо убедиться, что UISwipeGestureRecognizer признают одновременно с panGestureRecognizer использованием UIGestureRecognizerDelegate

func gestureRecognizer(UIGestureRecognizer, shouldRecognizeSimultaneouslyWith: UIGestureRecognizer) { 
    return true 
} 

Затем, когда метод действия ваших двух пальцев UISwipeGestureRecognizer называется, сброс panGestureRecognizer вручную.

pageViewController.scrollView.panGestureRecognizer.isEnabled = false 
pageViewController.scrollView.panGestureRecognizer.isEnabled = true