开发遇到的坑一

项目的需求:在后面大的白色view中,上部添加一个蓝色的Aview,下部添加一个橙色的Bview,在Bview中添加一个红色按钮,点击红色按钮去处理事件。

遇到的问题:在按照上面的样式,画好界面之后,也给按钮添加了点击事件响应方法,但是点击按钮没有反应,代码压根走不到响应方法里面去。

解决思路:该点击事件没有分配给button去处理,所以是响应者链的问题。

查找原因办法:1,用图层层级工具检测,发现视图上面没有其他view遮盖。

2,检测按钮机器父控件的alpha,userInteractionEnabled,hidden等熟悉,都没问题。都可以接收点击事件。

最后发现所有常规方法都发现不了问题在哪里。

揭晓答案:我把Bview添加到了Aview中,成为Aview的子控件。

分析原因:Bview本来应该添加到白色的大View中,按照响应者链条,点击按钮事件会正常分配给button。但是我却把Bview误添加到了Aview中,此时点击button,按钮接收不到事件,因为要想button接收,事件必须从底层出发,一层一层经过Aview等祖先控件传递到button,但是现在点击的button所在的位置,不在Aview的范围内,Aview不会接受处理该事件,Aview都不接受处理了,那么他的子view,button肯定也不会响应该事件。

解决方法:一句代码把Bview正确添加到白色大view中,即可。事件的底层处理机制,是解决该问题的关键。

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

推荐阅读更多精彩内容

  • 好奇触摸事件是如何从屏幕转移到APP内的?困惑于Cell怎么突然不能点击了?纠结于如何实现这个奇葩响应需求?亦或是...
    Lotheve阅读 57,791评论 51 602
  • 在iOS开发中经常会涉及到触摸事件。本想自己总结一下,但是遇到了这篇文章,感觉总结的已经很到位,特此转载。作者:L...
    WQ_UESTC阅读 6,081评论 4 26
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,820评论 25 708
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,497评论 0 17
  • 2017年8月29日天气晴星期二 我妈妈回到我身边了,我特别的事情就是我很开心。我的什么事情都没有了。
    琦琦花仙子小月阅读 377评论 0 1