iOS开发 touch事件的优先级和事件传递
2013-10-09 16:23
211 查看
界面类的对象一般都是可以接触点击事件的,只不过有的默认接受,有的需要设定属性。
userInteractionEnabled 属性设置为YES的时候就可以接受点击事件了
- (void)touchesBegan:(NSSet *)
touches withEvent:(UIEvent *) event
- (void)touchesMoved:(NSSet *) touches withEvent:(UIEvent *)
event
- (void)touchesEnded:(NSSet *) touches withEvent:(UIEvent *)
event
- (void)touchesCancelled:(NSSet *) touches withEvent:(UIEvent *)
event
上面三个方法就会显示触摸的地方,可以在里面进行响应的操作
touch事件同时只能给一个对象,那么控制touch事件分配的对象也是一个难点了
首先touch事件响应的优先级就是界面的层次,在最上层不响应的时候就会传递给下层
当点击一个区域,想把想把事件传递下去,其他区域拦截事件的时候又是一个问题了
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
这个方法可以很好的解决问题,当返回NO的时候就可以传递下去,返回YES的时候当前对象接受点击事件
CGRectContainsPoint(CGRectMake(0, 0, 40, 40),
point);
经常配合这个方法来判断触摸点是否在CGRect内;
userInteractionEnabled 属性设置为YES的时候就可以接受点击事件了
- (void)touchesBegan:(NSSet *)
touches withEvent:(UIEvent *) event
- (void)touchesMoved:(NSSet *) touches withEvent:(UIEvent *)
event
- (void)touchesEnded:(NSSet *) touches withEvent:(UIEvent *)
event
- (void)touchesCancelled:(NSSet *) touches withEvent:(UIEvent *)
event
上面三个方法就会显示触摸的地方,可以在里面进行响应的操作
touch事件同时只能给一个对象,那么控制touch事件分配的对象也是一个难点了
首先touch事件响应的优先级就是界面的层次,在最上层不响应的时候就会传递给下层
当点击一个区域,想把想把事件传递下去,其他区域拦截事件的时候又是一个问题了
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
这个方法可以很好的解决问题,当返回NO的时候就可以传递下去,返回YES的时候当前对象接受点击事件
CGRectContainsPoint(CGRectMake(0, 0, 40, 40),
point);
经常配合这个方法来判断触摸点是否在CGRect内;
相关文章推荐
- OS开发 touch事件的优先级和事件传递
- iOS开发-Day28-UI自定义控件&消息传递&事件传递机制
- IOS开发--给UIImageView添加touch事件
- IOS开发--给UIImageView添加touch事件
- ios开发事件处理之 :二:事件的产生与传递
- [ IOS-Cocos2d-x 游戏开发之一] -cocos2d-x触摸事件优先级的探究与实践
- 【iOS开发-88】事件传递原理解释哪个控件处理事件以及响应者链条的介绍
- IOS 开发 手势 及事件传递机理
- 【iOS开发-85】利用touch触摸事件:实现画板画画、撤销、清屏以及图片保存功能
- iOS开发 - 事件传递响应链
- iOS开发-事件传递与响应者链中的hitTest方法和pointInside方法
- iOS开发中的事件处理(二)-事件传递,响应者链条
- iOS开发触摸事件的传递
- 【iOS开发-88】事件传递原理解释哪个控件处理事件以及响应者链条的介绍
- IOS的处理touch事件处理(依照手指的移动移动一个圆,开发环境用的ios7,storyboard)
- iOS开发之事件传递响应链
- IOS的处理touch事件处理(按照手指的移动移动一个圆,开发环境用的ios7,storyboard)
- iOS开发 - 事件的产生和传递
- 详解Cocos2d 开发关于CCLayer中Touch事件 以及优先级
- iOS开发之事件的产生和传递