博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【SDK fix】iOS 8下将UIButton放置于tabbar位置无法响应event
阅读量:6382 次
发布时间:2019-06-23

本文共 1171 字,大约阅读时间需要 3 分钟。

本blog除部分译文外,所有内容均为原创,如有雷同,算我抄你:-)

问题描述

问题来自于这篇帖子。简单地说,在设置

objcdetailVC.hidesBottomBarWhenPushed = YES;

之后,放一个view在tabbar原来的位置上,再在view上添加一个button,像这样

图片描述
为button添加touchDown action,当按住button的左下角区域时,action没有被触发。

触发环境

iOS 7或以上,真机调试。

分析过程

先查看HitTest的结果,button实例被正确地返回了。这说明button并没有被透明的view所遮盖。

接着,override button的touchesXXX方法。当按下button的左下角时,touchesBegan等4个方法完全没有被调用到。参考下图
图片描述
应该存在一个gesture recognizer,并且设置为YES。

delaysTouchesBegan (default of NO)—Normally, the window sends touch objects in the Began and Moved phases to the view and the gesture recognizer. Setting delaysTouchesBegan to YES prevents the window from delivering touch objects in the Began phase to the view. This ensures that when a gesture recognizer recognizes its gesture, no part of the touch event was delivered to the attached view. Be cautious when setting this property because it can make your interface feel unresponsive.

考虑当前场景,应该是滑动返回手势捣的鬼。稍微验证一下

objc- (void)viewDidLoad{    //Other codes here    NSLog(@"%d", self.navigationController.interactivePopGestureRecognizer.delaysTouchesBegan);}

得到结果

图片描述
那么答案就很明显了。

解决方案

objcself.navigationController.interactivePopGestureRecognizer.delaysTouchesBegan = NO;

Demo

参考资料

转载地址:http://akkha.baihongyu.com/

你可能感兴趣的文章
树莓派+图灵机器人+百度tss服务=树莓派语音机器人
查看>>
C Primer Plus 第3章 数据和C
查看>>
批处理判断变量值是否为空的终极方法
查看>>
前两天网站访问慢的问题定位过程以及最终解决办法
查看>>
pinpoint 安装部署
查看>>
《工具 系列》 - Git使用
查看>>
nginx 点滴
查看>>
PHP运算符
查看>>
VB用CreateObject的方法获取指定网页源码
查看>>
pcDuino上自制douban.fm播放器
查看>>
centos yum 完全卸载依赖
查看>>
Erlang Term sharing
查看>>
优秀互联网高级测试工程师应该具备的能力
查看>>
DDMS抓取的内存影像放到MAT中查看
查看>>
Java向MySQL数据库插入中文数据乱码问题
查看>>
VirtualBox 安装 CentOS-7-Minimal 无网络连接(桥接网卡)
查看>>
CocoaPods本身版本的更新
查看>>
毕业设计(十六)---发表文章(2)之- ckeditor 添加自定义表情
查看>>
quartz定时器在Spring中的配置方式区别
查看>>
Oracle Linux 6 桥接网卡
查看>>