其实不光是UIButton,很多控件都会碰到点击无效的问题,原因有很多,下面提一下我碰到过的问题。
1、父View无法点击
当把控件加入到一个UIView中,而这个view无法控制时,也即userInteractionEnabled = NO,那么其中的所有子控件都无效,此时必须将view.userInteractionEnabled设置为YES。
2、父View的Frame设置不正确
当父View的frame没有设置而子控件能显示时,或者子控件的frame大于父view的frame时,子控件也无法点击。
3、被其它控件挡住了
这个是最有可能发生的情况。
比如在为UIView设置背景图片时,在uiview上添加一个UIImageView,而且没有放到最底层,就会覆盖其它的子控件。
或者是在一个设置UINavigationBar为透明的ViewController中,将控件的位置放在UINavigationBar的位置时,就会被UINavigationBar挡住,而且这个问题很难调试出来,此时只要添加以下代码即可:
self.navigationController.navigationBar.userInteractionEnabled = NO;