使UIScrollView仅适用于内容部分,而不是" side"

时间:2016-05-28 20:46:41

标签: ios swift uiscrollview

这是一个滚动视图(它是灰色区域)。内容区域为黄色。请注意它是插入的,以便您可以将内容的两侧滚动到屏幕中间。

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

我希望它能够工作,这样你只需将手指放在黄色内容上即可滚动。如果你把手指放在灰色"背景"并尝试滚动它,什么都不应该发生。

怎么做?

黄色内容完全向右滚动,它位于此处:

enter image description here

黄色内容完全向左滚动,它位于此处:

enter image description here

2 个答案:

答案 0 :(得分:1)

创建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
    }

}

答案 1 :(得分:-1)

这应该有效。 在scrollViewWillBeginDragging中你记得拖动开始的坐标,在scrollViewDidScroll你确定是否在黄色区域内开始拖动并且什么也不做(允许滚动正常发生),在其他情况下你返回ScrollView {{1} }属性到contentOffset

时的坐标