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

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

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

最佳答案

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

您可以设置滚动视图的 super 视图(BIGGER ...),以将触摸传递给滚动视图。它正在工作M-A-G-I-C-A-L-Y =]

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

现在创建一个新类(我将使用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”(或用于自定义类的名称)。

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

而已!!无需手势识别器!!
新视图会将所有接触传递给滚动视图,并且就像平移它一样运行=]

在我的回答中,我使用了that answer

编辑:我现在改进了代码,它无法按预期工作,现在它仅在需要时才捕获,而不是像以前那样在应用程序中进行任何触摸

关于ios - ScrollView-手势识别器-垂直滑动,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41131986/

10-08 21:48