我有一个UIViewController
withUIPageViewController
变量。
我正在尝试UIPageViewController
针对屏幕上的某些位置禁用滑动。我通过将其设置UIViewController
为UIGestureRecognizerDelegate并将UIPageViewController
委托中的手势识别器设置为self(UIViewController
)来实现。我似乎找不到手势识别器在哪里,也找不到它的位置UIPageViewController
。
我已经尝试过这三个地方,并且在viewDidLoad
方法中都变成空白:
println("gesture\(self.pageViewController!.gestureRecognizers)")
println("gesture\(self.view.gestureRecognizers)")
println("gesture\(self.pageViewController!.view.gestureRecognizers)")
更新*******************:
所以我发现有些UIGestureRecognizers隐藏在navigationController中,但是将它们添加为委托并运行下面的代码没有任何作用。是因为我的UIGestureRecognizers错误。其中也有一个UIPanGestureRecognizer。为什么我的页面控制器或页面控制器视图中没有识别器?
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
println("Should recieve touch")
return false
}
我正在获取“应接收触摸”以打印到日志,但返回false,并且未禁用任何滑动。我究竟做错了什么?
过去,我尝试使用UIScrollView做类似的事情。UIScrollView具有名为panGesture的成员。但是您可以像这样在pageViewControllerGesture上循环(已在基于页面的标准应用程序上测试):
override func viewDidLoad() {
super.viewDidLoad()
// other set up
// loop over your pageViewController gestures
for gesture in self.pageViewController!.gestureRecognizers
{
// get the good one, i discover there are 2
if(gesture is UIPanGestureRecognizer)
{
// replace delegate by yours (Do not forget to implement the gesture protocol)
(gesture as! UIPanGestureRecognizer).delegate = self
}
}
}
func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool
{
// add custom logic
var ShouldISwipe = rand()%2 == 0
println("Should I Swipe : \(ShouldISwipe)")
return ShouldISwipe
}
我发现该链接也可能有帮助(应该转换为快速链接):http : //www.lukaszielinski.de/blog/posts/2014/03/26/restrict-panning-of-uipageviewcontroller-to-certain-area /
希望能有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句