在XCode / Swift中,是否可以使用UIPageViewController,当触摸发生在页面控制器页面中包含的UIImageView之外时,它只会水平滚动?
到目前为止,在搜索类似问题时,我只能找到一种方法来禁用UIPageViewController中的所有触摸,但这样做会使UIImageView无法触及。下面的代码显示了我如何想象如果可能的话...... [/ p>
@IBOutlet weak var MyImageView: UIImageView!
var location = CGPoint(x: 0, y: 0)
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
var touch : UITouch! = touches.anyObject() as UITouch
location = touch.locationInView(self.view)
if /* 1.) detect if touch is inside of MyImageView */ {
// 2.) Disable Page Controller scroll but still
// allow any kind of touch actions to take place within MyImageView
} else {
// 3.) Enable Page Controller scroll?
}
}
1。)我可以很容易地想出一种原始的处理方式。但是,我可以从更有经验的Swift
中学到一些东西2。)无法弄明白......
3。)无法弄明白......
我再次对此感到陌生......如果我需要提供更多信息,请告诉我,并感谢您查看此问题!
答案 0 :(得分:1)
1)你需要检查视图是否包含命中点。
view.frame.contains(point)
2)您可以做的是记录滚动视图的当前内容偏移量,并且每个帧都将内容偏移量设置为相同的值(这使您可以启用触摸交互但将内容保留在同一位置:
scrollview.contentOffset = frozenContentOffsetValue
3)当你想再次允许滚动时,只需停止分配上述内容偏移。
//基于使用UIPageView控制器而不是UIScrollView进行更新
1)同上,检查是否view.frame.contains(point)
2)如果你的观点确实包含了你要做的事情:
UIPageViewController.view.userinteractionEnabled = false
UIPageViewController.view.userinteractionEnabled = true
这样做会禁用当前触摸的效果,但下次会再次触摸。但是它的设置使它总是取消触摸,当你想从你的UIView取消触摸时。