首页 > 解决方案 > 两指向下滑动返回菜单

问题描述

我正在创建一个应用程序,其中第一个屏幕是主菜单。一个按钮进入设置页面并位于导航控制器中,因此有一个“后退”按钮。另一个选项打开相机以查看现实。我想启用识别两个手指向下滑动返回主菜单的能力。

这个最新版本的 Swift 很新,所以我需要帮助!

标签: iosswiftxcode

解决方案


这更像是一个 iOS 问题,而不是一个 Swift 问题。

看看UISwipeGestureRecognizer课堂。您可以将滑动手势识别器配置为需要两指滑动。

滑动手势识别器的特点是它是“一次性”手势。在检测到滑动之前它不会报告任何内容,然后它会触发您的操作。

滑动手势识别器不会让您慢慢向下滚动并看到主菜单开始出现。如果您想要这种效果,则必须改用 2 指平移手势识别器并添加一些您自己的自定义代码来处理中间滚动和确定手势从滚动到滑动跨越阈值的逻辑。

一个快速的谷歌搜索发现了这个解释使用滑动手势识别器的链接:

https://www.techotopia.com/index.php/Identifying_Gestures_using_iOS_8_Gesture_Recognizers#Recognizing_Swipe_Gestures

(对于您的情况,您需要添加swipeRecognizer.numberOfTouchesRequired = 2 and change your swipe direction to .down`)

修改该示例中的代码:

let swipeRecognizer = UISwipeGestureRecognizer(target: self, 
             action: #selector(ViewController.swipeDetected(_:)))
swipeRecognizer.direction = .down
swipeRecognizer.numberOfTouchesRequired = 2
self.view.addGestureRecognizer(swipeRecognizer) 

(虽然动作签名在我看来是错误的。 UIGestureRecognizer 的发送者是手势识别器,而不是视图控制器。我希望 init 调用看起来像这样:

let swipeRecognizer = UISwipeGestureRecognizer(target: self, 
             action: #selector(ViewController.swipeDetected as 
        (UITapGestureRecognizer) -> () -> ()))

编辑:

两指滑动需要更改的设置是 numberOfTouchesRequired,而不是 numberOfTapsRequired。我修复了上面的代码以及动作签名。


推荐阅读