一尘不染

ScrollView-手势识别器-垂直滑动

swift

我有一个UIScrollView,可以在向左或向右滑动时使用,但是我减小了scrollView的大小,因此,现在显示区域不能完全占据超级视图的框架,并且滑动仅在滚动视图的框架内起作用。

我希望即使在缩小的滚动视图的水平范围之外上下滑动时也可以垂直滚动。

建议使用手势识别器,但这超出了我目前对iOS的了解,可以使用更具体的建议或更多指导来开始使用。


阅读 187

收藏
2020-07-07

共1个答案

一尘不染

有一种更简单的方法,然后使用手势识别器=]

您可以设置滚动视图的超级视图(BIGGER …),以将触摸传递给滚动视图。它正在MAGICALY =]

首先,选择将所有接触传递给滚动视图的视图。如果您的父视图已经可以,则可以使用它。否则,您应考虑以所需大小添加新视图,以吸引触摸。

现在创建一个新类(我将使用swift作为示例)

class TestView: UIView {

    @IBOutlet weak var Scroller: UIScrollView!

    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {

        let view = super.hitTest(point, with: event)

        if (view == self) {
            return Scroller
        }

        return view

    }

}

真好!现在,如您所见,我们添加了滚动条的出口。因此,请使用界面生成器,选择新视图,然后TestView身份检查 器中将其类设置为“ ”
(或将其用于自定义类的名称)。

设置课程并仍然选择视图后,转到 连接检查器, 然后将“ Scroller” 连接到情节提要上的滚动视图。所有连接正确=]

而已!!无需手势识别器!!新视图将所有触摸内容传递给滚动视图,并且其行为就像您在其中平移一样=]

编辑: 我现在改进了代码,它不能按预期的方式工作,现在它仅在需要时才捕获,而不是像以前一样在应用程序中进行每一次触摸

2020-07-07