UIButton里面嵌套的UIView后无法响应事件

我使用了storyboard搭建了界面
界面如图
clipboard.png
红色圈出来的是四个UIButton,
每个UIButton里面嵌套了一个UIView,UIView是铺满的,然后UIView里面放的是一个图标和一个Label,
使用addTarget添加事件,结果没有反应。
我将UIButton里面的UIView区域缩小。如图
clipboard.png
红色区域是UIView,这里点击是无效的,而蓝色区域是UIButton,除掉红色区域其他地方点击都有效果。

想请教一下这种情况是什么原因,我之前使用纯代码的方式似乎不会出现这种情况啊。

阅读 12.9k
5 个回答

对于UIIView userInteractionEnabled属性默认是YES;
所以UIView会截获点击事件,点击事件不会向下传播。

对于UIImageView userInteractionEnabled属性默认是NO;
所以UIImageView不会截获点击事件,点击事件会继续向下传播。

你以前可能是在button上添加UIImageView,而现在添加的是UIIView。所以会出现跟以前不一样的效果。

解决办法:将UIView的userInteractionEnabled设置为NO即可。

哥们。。按钮不需要嵌套就可以表达出你这种效果。你要么自定义一个UIControl要么一个UiView上放个图片和标签然后用个没有文字背景默认得图片覆盖。 你这种是uiview的触摸点把下面的覆盖了。而你uiview没得触摸方法。。或者你也可以加个手势到这些view上

你这种写法有个问题,如果加上点中后颜色改变怎么办? uibutton有这种样式,设置边距的,你找找

上面的答案已经回答很好了,我想说的是你这样写逻辑就有问题,如果对Touch事件传导不太熟悉的话,建议可以搜:事件响应者链,会给你很大的帮助。

设置UIlabel和UIImageView的UserIntercace=YES

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏