UIButton TouchDown事件延迟响应问题

有时候放在屏幕边缘的Button会出现延迟响应TouchDown事件的问题(表现为手指按下后有很明显的一段时间延迟后才响应)。最典型的场景就是做类似微信的在屏幕底部一个按住说话的语音录入按钮。
出现该问题的原因是,在屏幕边缘处,有一些系统手势的存在,比如在屏幕底部有上拉划出系统菜单的手势。所以当你按住Button,在响应TouchDown事件前,系统会缓冲一段时间来判断你是想上拉划出系统菜单还是响应TouchDown事件,所以就会有明显的延迟感觉。
解决该问题的方法是,在呈现Button的Controller中添加以下方法。

- (UIRectEdge)preferredScreenEdgesDeferringSystemGestures {
    return UIRectEdgeBottom;//该参数表示底部,根据需要修改
}

添加该方法后,在底部区域内会优先响应我们自己的事件。(但是也会导致无法像其他地方一样一次上划手势就上拉出系统菜单)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AGI阅读 16,018评论 3 119
  • 我最亲爱的优儿: 昨晚妈妈太累了,本想小睡一会儿的,结果睁开眼睛就看到了今天的朝阳。那就把两天的并在一起写吧...
    晓寒iyoyo阅读 157评论 0 1
  • 初学者买钢琴往往比较纠结怎么知道钢琴的质量如何,我们给大家买琴前的建议就是学会“先看、在听、后弹”。 1、看?买钢...
    乐都乐器商城阅读 469评论 0 0
  • 2018年1月2日客户部陆海工作成为日志: 转眼已是2018年,来到龙瑞也有102天了,回顾来到龙瑞的工作,我在公...
    记忆的倒影阅读 84评论 0 0
  • 终于还是没逃不过出门接你,这是我一个周中最艰难的时刻,周末出门实在是太痛苦可是我却没有办法~~~ 去接...
    等风来Ethel阅读 256评论 0 0