3

带有 PageCurl 过渡的 UIPageViewController 非常适合模拟页面,但默认的 GestureRecognizer (UIPanGestureRecognizer) 仅响应单指事件。我想在其他手指事件之上添加一个两指事件。

如何将另一个 PanGestureRecognizer 添加到当前 UIPageViewController 实例?这个新的 PanGestureRecognizer 应该等待两个手指平移触摸,而不禁用原始的 UIPanGestureRecognizer。

如果用户用两根手指而不是一根手指滚动页面,我需要的只是一种引发额外自定义事件的方法,但它仍然应该像调用单指事件一样滚动页面。

如何在 MonoTouch 中做到这一点?

提前致谢。

4

1 回答 1

10

我自己解决了这个问题。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;

并使用此值进行相应的操作。

于 2011-11-22T10:57:15.650 回答