小程序Longpress的Bug及其解决

发表于:2018-4-20 11:05

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:jetz    来源:博客园

  我的小程序中,用到一个长按修改的功能,设计是这样的,短按tap,长按longpress
  
  但是,偶尔出现长按无效的情况。我自己都经常碰到,今天仔细研究,用半天时间反复寻找,重现,发现问题和内存或别的因素无关,最有可能是事件引起的。我发现,这种操作下,长按无效会大概率出现:
  把列表上拖,使分隔线位于屏幕上沿,手尽量按分割线,这时,不会出现长按后的弹出菜单。再往后,就是长按无效。但tap依然有效。
  而且,一般过一段时间,又正常了。
  学习文档,发现:
  长按原来的事件是longtap,问题就很多,和tap老是冲突,才导致又用这个新事件
  longpress的处理是,如果350毫秒内没有处理,将触发tap,否则不触发tap。
  加上又是冒泡事件,情况更加复杂。
  对于效果,我比较不满意。一方面,要手抬起来后,才触发tap事件,另外长按和tap没有关联,和正常习惯也不一致。我看微信本身的处理是,按在列表上,立刻有点中的响应,再过一小会,弹出菜单。
  经过反复试验,找到一个接近微信的解决方案
  
  捕获两个事件,按下事件直接处理选中,并记录timestamp,tap事件处理是否弹出菜单。可能比微信稍晚点(要手起来才出菜单),但也算接近了。

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号