开发遇到的坑一

开发遇到的坑一_第1张图片

项目的需求:在后面大的白色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中,即可。事件的底层处理机制,是解决该问题的关键。

你可能感兴趣的:(开发遇到的坑一)