我有一个 UIScrollView,可以在向左或向右滑动时工作,但是我已经减小了 ScrollView 的大小,因此,现在显示区域没有完全占据 super View 的框架,并且滑动仅在 ScrollView 的框架内起作用.
我希望即使在缩小的 ScrollView 的水平边界之外上下滑动时也能够垂直滚动。
有人建议我使用手势识别器,但这超出了我目前对 iOS 的熟悉程度,可以使用更具体的建议或多一点指导来开始使用。
最佳答案
有一个更简单的方法,然后使用手势识别器 =]
您可以设置 ScrollView 的 super View (更大...)以将触摸传递到 ScrollView 。正在运行 M-A-G-I-C-A-L-Y =]
首先,选择将所有触摸传递到 ScrollView 的 View 。如果您的父 View 已经同意,您可以使用它。否则,您应该考虑添加一个您想要的大小的新 View ,以捕获触摸。
现在创建一个新类(我将使用 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
}
}
不错!现在如您所见,我们添加了滚动器的导出。因此,使用界面生成器,选择新 View 并将其类设置为身份检查器中的“TestView
”(或者设置为您将用于自定义类的名称) .
设置类后,您的 View 仍处于选中状态,转到连接检查器,并将“Scroller
”连接到 Storyboard 上的 ScrollView 。全部连接正确 =]
就是这样!!不需要手势识别器! 新 View 会将其所有触摸传递给 ScrollView ,并且其行为就像您在其中平移一样 =]
在我的回答中我使用了 that answer
编辑:我现在改进了代码,它以前没有按预期工作,现在它仅在需要时捕获,而不是像以前那样捕获应用程序中的每次触摸
关于ios - ScrollView - 手势识别器 - 垂直滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41131986/