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

标签 ios iphone swift xcode scrollview

我有一个 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/

相关文章:

swift SpriteKit : How to generate objects and make the game view move upwards as my player moves up the screen?

iphone - 在 textFieldDidEndEditing 中隐藏 UITextField

ios - 在 tableView 中添加填充功能 (Swift)

ios - 快速实现导航菜单的标准方法是什么?

iphone - 如何在 webview ios 中自定义字符串值

iphone - 使用 Core Data 将更改从一个上下文合并到另一个上下文

iphone - MKMapViewDelegate + JSON Alamofire

json - 使用 EVReflection 进行非常缓慢的 JSON 解析,具体取决于 iOS 设备

ios - 如何正确设置 NSNotification 并发布?

ios - 如何将角标(Badge)添加到 UINavigationItem (UIBarButtonItem) - Swift 3