首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

UIGestureRecognizer发射两次?

在 iOS 和 macOS 中,UIGestureRecognizer 可以用来识别多种手势,比如点击、长按、滑动等等。在 iOS 中,UIGestureRecognizer 发射两次,通常是因为用户进行了两个连续的手势操作,比如先进行了一个点击操作,然后紧接着又进行了一个长按操作,系统会识别并发射两次。

要限制 UIGestureRecognizer 发射次数,可以在初始化时设置 numberOfTouchesRequired 属性为 1,即只需要一个触摸点即可触发手势,如下所示:

代码语言:swift
复制
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(handleTap(recognizer:)))
tapGestureRecognizer.numberOfTouchesRequired = 1
view.addGestureRecognizer(tapGestureRecognizer)

除了设置 numberOfTouchesRequired 属性外,还可以使用 require(toFail:) 方法来让手势识别器等待一个其他的手势识别器失败后再触发,这样也可以避免多次触发手势识别器。

代码语言:swift
复制
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(handleTap(recognizer:)))
let longPressGestureRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(handleLongPress(recognizer:)))
longPressGestureRecognizer.require(toFail: tapGestureRecognizer)
view.addGestureRecognizer(longPressGestureRecognizer)

这样,当用户进行长按手势时,UILongPressGestureRecognizer 会先尝试触发 handleLongPress(recognizer:) 方法,如果用户进行的是点击手势,则 UITapGestureRecognizer 会先尝试触发 handleTap(recognizer:) 方法,这样就避免了多次触发手势识别器的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

10分8秒

2.4速度变量与随机发射

6分3秒

【少儿Scratch3.0编程】 2.2 发射小球

5分7秒

【少儿Scratch3.0编程】 2.3 小球发射与反弹

-

SpaceX星舰开始准备“轨道发射”,SN15原地检查中

-

马斯克太疯狂!每天发射一颗卫星建全球WiFi,让电信倒闭

1分49秒

为缓解通胀居高不下的压力,美联储自3月以来已先后两次加息。

11分31秒

day01_19_尚硅谷_硅谷p2p金融_连续点击两次退出应用

5分33秒

74_尚硅谷_大数据SpringMVC_Bean对象被创建两次的问题演示.avi

-

关于5G,国内院士两次发声,库克也站出回应!最担心的事发生了?

-

IDC报告:百度智能云人脸人体识别公有云服务连续两次排名第一

3分7秒

视频-蓝牙音频发射模块 蓝牙耳机连接是如何操作的以BT321F为例

2分47秒

视频 BT321F蓝牙音频主机发射连接TWS耳机回连和主动连接的说明

领券