MonoTouch: Как добавить распознаватель жестов двумя пальцами в UIPageViewController? - PullRequest
3 голосов
/ 21 ноября 2011

UIPageViewController с переходом PageCurl отлично подходит для имитации страниц, но GestureRecognizer по умолчанию (UIPanGestureRecognizer) отвечает только на события одного пальца.Я хочу добавить событие двумя пальцами над остальными.

Как добавить еще один PanGestureRecognizer в текущий экземпляр UIPageViewController?Этот новый PanGestureRecognizer должен ждать касания двумя пальцами без отключения исходного UIPanGestureRecognizer.

Все, что мне нужно, это способ вызвать дополнительное пользовательское событие, если пользователь прокручивает страницы двумя пальцами вместо одного, новсе равно следует прокручивать страницы, как было вызвано событие одним пальцем.

Как я могу сделать это в MonoTouch?

Заранее спасибо.

1 Ответ

10 голосов
/ 22 ноября 2011

Я решил проблему сам. UIPageViewController содержит массив распознавателей жестов. Первый - тот, который нам нужно получить, изменив его свойство MaximumNumberOfTouches с 1 на 2. Вот код:

UIPageViewController pageController = new UIPageViewController (UIPageViewControllerTransitionStyle.PageCurl, UIPageViewControllerNavigationOrientation.Horizontal, UIPageViewControllerSpineLocation.Min);

UIPanGestureRecognizer pan_gesture_recognizer = (UIPanGestureRecognizer) pageController.GestureRecognizers[0];

pan_gesture_recognizer.MaximumNumberOfTouches = 2;

Затем, внутри вашего кода, обрабатывающего событие переворачивания страницы (в моем случае пользовательский класс, унаследовавший «UIPageViewControllerDataSource»), вы можете получить доступ к текущему количеству касаний:

int number_of_touches = pageController.GestureRecognizers [0].NumberOfTouches;

и используйте это значение, чтобы действовать соответственно.

...