关于iPhone边缘触摸延迟现象
初衷
这是在工作中遇到BUG,然后解决BUG的历程。
希望我的思路及方向能对你有所启发。
现象
游戏在真机测试出现某些区域不响应的问题。
查原因
找反馈者沟通
去了解具体发生的问题及有无任何规律等。
了解到只在iPhone手机上才出现。
自己测试
黑盒
方法:根据现象,进一步测试,打不同手机包等
经过各种测试,总结出的特征如下:- 只有iPhone手机有问题(测试过几款Android手机 及 模拟器)
- 只有边缘触摸有问题(将触摸区域移动过不同的位置)
- 只有iPhone 6s以上手机有问题
白盒
方法:打印触屏信息等。
发现 开始触摸时并没有打印,但是在结束触摸时,开始触摸喝结束触摸同时相应。
进一步打印,发现触摸开始和结束在同一帧执行。总结
其实,在只有 iPhone 6s 以上手机有问题就比较好确定了。
经过调查发现 6s开始支持了 3D touch。
解决
既然发现3D touch有关,那就关闭3D touch看看效果。
关闭以后发现,左右两边没有问题了,但是底边还是有问题。
又了解到苹果按住边缘滑动,会滑出任务管理器,这个好像没办法关掉…
然后,就去cocos2d的github的issues看有没有遇到同样的问题的。
发现也有人遇到了同样的问题,已经解决好了。 [ https://github.com/cocos2d/cocos2d-x/issues/18479 ]
解决方法就是将手势识别的触摸开始的延迟关掉。
在 AppController.mm 文件内,
[window makeKeyAndVisible]; 之后
加入:
for(UIGestureRecognizer* gesture in window.gestureRecognizers)
{gesture.delaysTouchesBegan=NO;
}
完美解决问题。
真是查问题5小时,解决问题5秒钟。
扩展
一般到这里,解决完问题就结束了。
BUG是无穷尽的,但是它们是有共性的。
我们遇到一个问题,通过分析它能解决一类问题,这才是进步。
UIGestureRecognizer 是手势识别器的基类。
它用于识别触摸序列(或其他输入)的逻辑进行解耦,并对该识别进行操作,负责发送操作消息或转发触摸消息等。
它主要有以下的手势:
- UITapGestureRecognizer [轻拍手势]
- UIPinchGestureRecognizer [捏合(缩放)手势]
- UIRotationGestureRecognizer [旋转手势]
- UISwipeGestureRecognizer [轻扫手势]
- UIPanGestureRecognizer [平移手势]
- UIScreenEdgePanGestureRecognizer [屏幕边缘平移手势]
- UILongPressGestureRecognizer [长按手势]
如果窗口绑定了手势识别器,触摸事件会先经过手势识别器处理,再传递给视图。
如果手势识别器识别了触摸,则传给视图的其余触摸事件将会被取消。
它有三个主要的属性:
- cancelsTouchesInView
如果手势识别器识别出手势,则从视图中解除该手势的其余触摸,从而使窗口不再传递它们。 - delaysTouchesBegan
只要手势识别器分析触摸事件没有失败,窗口就会将UITouchPhaseBegan阶段中的触摸对象传递给视图。如果随后识别手势,则视图不接收这些触摸对象。 - delaysTouchesEnded
只要手势识别器分析触摸事件没有失败,窗口就会将UITouchPhaseEnded阶段中的触摸对象传递给视图。如果随后识别手势,则触摸被取消。
更详细的可以看 参考资料3
总结
遇到问题 -> 分析&总结特征 -> 解决问题 -> 扩展问题
针对同一个问题,学到的比其他人更多更广,长期以来,必将更进一步。
参考资料
stackoverflow - TouchesBegan delay on left hand side of the display
[https://stackoverflow.com/questions/39998489/touchesbegan-delay-on-left-hand-side-of-the-display]stackoverflow - Swift SpriteKit 3D Touch and touches moved
[https://stackoverflow.com/questions/36060423/swift-spritekit-3d-touch-and-touches-moved]苹果开发者 UIGestureRecognizer [https://developer.apple.com/documentation/uikit/uigesturerecognizer?changes=_4&language=objc]
关于iPhone边缘触摸延迟现象相关推荐
- java键盘监听延迟_解决JAVA键盘监听的延迟现象以及八个方向的运动
首先解释一下键盘出现延迟的原因: 其实键盘为了用户体验,在按下一次按键之后,会有片刻的延迟,为什么会这样呢? 你想一下,当你打一个字母时,连着出来了好几个字母,你心里面的感受是怎么样的? 所以嘛,键盘 ...
- 解决JAVA键盘监听的延迟现象以及八个方向的运动
首先解释一下键盘出现延迟的原因: 其实键盘为了用户体验,在按下一次按键之后,会有片刻的延迟,为什么会这样呢? 你想一下,当你打一个字母时,连着出来了好几个字母,你心里面的感受是怎么样的? 所以嘛,键盘 ...
- 苹果手机iPhone 8 触摸信号断线导致无触摸维修
故障机型:iPhone8 故障现象:无触摸 维修过程:检测故障,开机手机在激活界面完全没有触摸.拆机,测量触摸显示座子对地阻值,发现第27脚TOUCH_TO_AOP_GPO_CONN对地阻值为OL. ...
- 视频流媒体服务器中怎么降低直播出现的延迟现象?
我之前在很多文章中分享过我们流媒体服务器如何优化直播体验,详细讲解了各部分造成低延迟和卡顿的原因和相应的优化原理.实际上,音视频的直播系统是一个复杂的工程系统,要做到非常低延迟的直播,需要复杂的系统工 ...
- 解决鼠标右键点击后菜单延迟现象
今日非常倒霉,早上起来一开机.不,应该是说早上起来一按电脑电源键,屏幕倒是亮了,可进不去桌面啊,只能卡在疑难解答界面.这是电脑第二次莫名其妙这样了,我保证昨天晚上啥也没干,嘿嘿.尝试一番操作后,还 ...
- 无家可归的iPhone
by Fabrice Dubois 通过Fabrice Dubois 无家可归的iPhone (Homeless iPhone) So, apparently the next iPhone won' ...
- ESP32 触摸传感器应用方案简介
ESP32 触摸传感器应用方案简介 ESP32 不仅提供核心的 Wi-Fi 和蓝牙功能,还集成了丰富的外设,不需要额外的外部元器件即可实现应用,比如,ESP32 支持具有 10 个触摸通道的触摸传感器 ...
- 2020什么牌子蓝牙耳机性价比高?十大高颜值游戏低延迟蓝牙耳机推荐
如今随着手机的功能不断强大,手机的周边配件也是出现更多的时尚潮品,那么无线蓝牙耳机肯定是不可缺少的必需品了.蓝牙耳机在生活中不同的场合和场景都会用到:开车.听歌.运动.游戏.看影视...... 那么如 ...
- 游戏蓝牙耳机哪款好?年末盘点:高性价比低延迟蓝牙耳机排名
自2016年iPhone 7取消了3.5mm的耳机接口,并且发布了发布了第一代AirPods,真无线蓝牙耳机就出现在人们的视野之中,随着时间的推移,各大耳机手机厂商逐步掌握和完善了真无线蓝牙耳机技术, ...
- 移动端触屏click点击事件延迟问题,以及tap的解决方案
在移动端 触屏click事件虽然也会响应,但是总感觉是有延迟,一直听说click事件在手机上有200~300毫秒的延迟问题,亲自测了一下,在pc端模拟手机的话是测不出来的,但是用手机测试时发现延迟非常 ...
最新文章
- WCF单元测试遇到的问题
- SpringBoot24 SpringDataJPA环境搭建、实体类注解、关联查询
- 软件项目获取用户需求的沟通技巧(摘自IT168技术频道)
- linux基本安全配置手册
- P2444-[POI2000]病毒【AC自动机】
- 本月 Windows Mobile 文章推荐
- 【C++深度剖析教程15】经典问题解析之关于string的疑问
- mysql update nowait_MySQL 8.0新特性 -- nowait以及skip locked
- 最优视频监控软件开发的实现方法
- Python爬虫实战(一):爬糗事百科段子
- ACM经验分享[转]
- 删除一行下方单元格上移_openpyxl3.0官方文档(5)——插入和删除行和列,移动单元格...
- 安装指定的vue-router版本
- 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_13-MongoDb入门-数据库和集合...
- 注册表右键取得管理员权限
- 视频教程-2021软考网络工程师 案例分析视频教程-软考
- 升级Spring Boot 2.x后RelaxedPropertyResolver不可用的解决方案
- 美国物流发展趋势对中国物流的影响
- Output Shape和Param参数解释
- Matplotlib系列(一):快速绘图入门
热门文章
- java 中的连接超时_【java中处理http连接超时的方法】
- Win11修改Hosts文件无法保存怎么解决?
- 苹果内购那些事儿(二)
- 关于H.265/HEVC视频压缩标准相较H.264/AVC节省50%左右的带宽方案的推荐
- 数据量太大,节省内存的几种方式
- Python爬网易云音乐的那些事
- 联想小新air13pro重装系统_联想小新Air13Pro笔记本U盘重装win10系统教程
- Scala——面向对象和函数式编程语言
- 企业如何做好数据防泄漏需求分析
- Cannot find module /node_modules/cz-conventional-changelog