使UIScrollView只在内容部分工作,而不是“双方”

这是一个滚动视图(这是灰色区域)。 内容区域是黄色的。 注意它的内容,所以你可以滚动内容的两边到屏幕中间。

问题:您可以将手指放在灰色区域并滚动。

我希望它的工作,以便您可以通过将您的手指上的黄色内容进行滚动。 如果您将手指放在灰色的“背景”上并尝试滚动,则不会发生任何事情。

这个怎么做?


黄色的内容完全滚动到右边,它在这里:

在这里输入图像说明

黄色的内容完全滚动到左边,它在这里rest:

在这里输入图像说明

制作UIScrollView的子类。 给它一个黄色视图的参考。 覆盖pointInside:withEvent:除非点在黄色视图的框架内,否则返回false

 class MyScrollView: UIScrollView { @IBOutlet var yellowView: UIView? override func pointInside(point: CGPoint, withEvent event: UIEvent?) -> Bool { return yellowView?.frame.contains(point) ?? false } } 

这应该工作。 在scrollViewWillBeginDragging您还记得拖动开始处的坐标,在scrollViewDidScroll您可以确定是否在黄色区域内开始拖动,并且什么都不做(允许滚动正常发生),否则您将ScrollView contentOffset属性返回到当前坐标scrollViewWillBeginDragging