[英]Only allow UIPageViewController to scroll when not touching inside UIImageView
在XCode / Swift中,是否可能有一个UIPageViewController仅在触摸发生在页面控制器页面中包含的UIImageView之外时才水平滚动?
到目前为止,除了搜索类似的问题之外,我只能找到一种方法来禁用UIPageViewController内的所有触摸,但是这样做会使UIImageView无法触摸。 下面的代码显示了我如何想象如果可能的话...
@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.)无法解决这个问题...
再次我是新手...让我知道是否需要提供更多信息,并感谢您解决此问题!
1)您需要检查视图是否包含命中点。
view.frame.contains(point)
2)您可以做的是记录滚动视图的当前内容偏移量,并且每一帧都将内容偏移量设置为相同的值(这使您可以启用触摸交互,但将内容保留在相同的位置:
scrollview.contentOffset = frozenContentOffsetValue
3)当您想再次滚动时,只需停止分配上述contentoffset。
//根据使用UIPageView控制器而不是UIScrollView进行更新
1)同上,检查view.frame.contains(point)
2)如果您的视图确实包含该点,那么您将执行以下操作:
UIPageViewController.view.userinteractionEnabled = false
UIPageViewController.view.userinteractionEnabled = true
这样做是禁用当前触摸的效果,但下次将允许再次触摸。 但是它的设置使其总是在您要从中取消触摸的UIView中取消触摸。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.