新问题,网上的都是什么遮盖啥的,这回我想描述的是另一个坑。
先看看古老的方法,懒的写了抄来的。
按钮的创建在iOS里面是很平常的了,但是有些时候创建了按钮却不知道为什么点击无响应,下面我们来分析一下:
1,一般按钮的用户交互属性肯定是默认打开的,但是如果父亲视图的属性是关闭的话,那按钮就不会有响应,比如把按钮加到UIImageView上,那最好把UIImageView的交互属性打开。
2,这个还是和父视图有关,按钮的位置一定要在父视图上,否则程序知道你设置了frame,也加到了父视图上,但就是没有响应,这时候你就得看看,button的frame是不是在父视图的frame范围内,超出范围,button是没有响应的,曾经做过一个ipad项目,在横竖屏的时候,我调整了button的位置,结果在切换时按钮就是没有响应事件,后来才知道父视图的位置也要相应的调整。
3,另外就是button本身的frame问题,或者有没有一层视图盖住了button导致按钮无响应,简单来说就是按钮本身和按钮他爹(父视图)的问题。
4,按钮的无响应事件肯定还有其他更多的原因,目前我也只能想到这了,等后期遇到问题我会继续更新。
文/小姚329(简书作者)
原文链接:http://www.jianshu.com/p/6d6c0a1ead39
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
按照这个作者方法你将解决轻度的问题。
重点来了袄~
不懂点击消息传递的看文章
http://www.open-open.com/lib/view/open1472566819554.html
这个文章讲的很细,将基础讲的很透彻,也有瑕疵,自己辨别。
【问题描述】
我当时写的时候,1控件和2控件都是加载到viewController.view上面的,他们是同级,当我点击btn发现没有效果也不调用点击函数。
【问题排查】
其实找这个问题很简单,只要你对手点击事件如何传递足够了解就能很快的解决。
先按本文开始的方法排查,然后检查代码,屏蔽代码,最终,发现影响问题的代码。
// 这个函数是获取点击并返回是否通知上层哥点击的就是这个控件
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
return YES; // NO
}
【解决方案】
由于他们是同级,而1为了实现分页效果及分页交互,在分页控件类中调用了- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event方法,这个方法做了拦截,当你点击btn也会调用该方法,我猜应该他们是同级关系才会触发,而我的解决方法也很简单,创建一个view将它加载viewcontroller.view上保证它与btn是同级,然后将1控件加在view上面,保证控件1比btn高一级。这样点击btn就不会去判断控件1了,而是直接告诉uiwindows是我小子。