今天,做项目的时候,有个需求,需要在UIView* view上放置一个UIButton* btn,代码写完,运行,表现正确,一个按钮乖乖地出现在了view上,点击,问题出现了,没有反应,一脸茫然,什么情况,立马想到,应该是按钮点击事件的问题,检查代码,发现无误,怪了,问题出在哪了,习惯性地输出了view的frame,发现btn的frame超出了view的frame,我想,问题应该始出现在这里了,同时也得出了一个结论1,如果一个UIButton的frame超出父视图的frame,UIButton还是可以显现的,但响应不了点击事件了,我又加了一个UIView* superView,作为view的父视图,view,superView,btn的关系是这样的,[superView addSubview:view]; [view addSubview:btn]; 可是,view有一块区域超出了superView,而btn刚好就在这一块区域中,这时你会发现,btn点击事件也是不响应的,故刚才的结论1需要扩展了,当开发中,遇到UIButton点击没有响应问题时,我们需要输出btn,view, superView的frame,看看btn.frame是否超出view,superView,superView1......
第一次在csdn写博客,今天上午遇到了上述问题,凭借经验,寻找问题的原因,无果,去google上寻找答案,发现有人提出是btn.frame超出view.frame的原因,后来我输出了btn.frame和view.frame,发现没有问题,又是一脸茫然,我试着输出了view.superView.frame,原因找到了,问题虽小,花费我一天的时间,不想以后可能遇到同样问题的开发者再浪费时间,这就是写此篇短博的原因,也是我第一次在csdn写博客,希望此篇短短的博文,能帮助到大家。
附上图片一张,输出后的结果,能看出问题的原因,我得说明一下,从左向右,依次是x, y,width,height,btnAccept的父视图attachView,attachView的父视图contntView,contntVIew的父视图sinRec,希望各位能看懂。