Swift 3:UISwipeGestureRecognizer 适用于 View 但不适用于 ViewContainer

Swift 3: UISwipeGestureRecognizer works on View but not on ViewContainer

我是 Swift 3 和 Xcode 8.3.3 的应用程序开发新手(虽然有编码背景)。我在 Swift.

中找到了一些我不太理解并且不知道如何实现的 Objective-C 答案

这是我的:

  1. Document Outline, Storyboard & Connections
  2. the OnboardingViewController Class

它的作用

swipeOnView 方法非常有效,我知道这是正确的,因为“2.文档大纲”是 "Container View" 的子项查看并且不接收手势。

但是:一旦 "Container View" 覆盖(或者应该 - 由于测试,它是高度的一半)整个屏幕,它似乎会阻止 UIView 接收手势 -> 两种方法都是渲染无用 -> 这又是正确的,我有点明白了。

我想要它做什么

我想让 swipeOnContainerView 方法工作,但我无法弄清楚如何告诉控制器 "listen" 仅针对容器的视图手势和忽略 "parent" UIView。

我自己弄明白了,方法如下:

第 1 步:为每个 GestureRecognizer 添加一个 Outlet 即 @IBOutlet var swipeLeftGestureRecognizer: UISwipeGestureRecognizer!

第 2 步:在 viewDidLoad() 中为每个 Outlet 添加一个委托,即 swipeLeftGestureRecognizer.delegate = self

第 3 步:将 func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) 的 return 值更改为 true

第 4 步:将 Referencing Outlet 连接到有问题的 UIView/SubView

第 5 步:将 IBAction 添加到每个 GestureRecognizer

完成