码迷,mamicode.com
首页 > 移动开发 > 详细

IOS事件传递和处理中的细节问题

时间:2015-08-02 13:20:12      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:

1. 事件处理分两步:

1)寻找合适的相应对象,这个时候是从父控件到子控件的;

2)对事件进行处理 由子空间到父控件

注意点:如果连个视图是同级的关系,那么先加到View上的视图是后相应的(如果利用StroyBoard添加View,也是后先加上的后响应)。此时可以重写父类的Point:inside 和 Hit:test方法来试验

 

技术分享

 1 -(UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event
 2 {
 3 
 4     
 5     UIView * resultView = [super hitTest:point withEvent:event];
 6     
 7     NSLog(@"%s",__func__);
 8     return resultView;
 9 
10 }
11 -(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
12 {
13     
14     NSLog(@"%s",__func__);
15     NSLog(@"Red==%d",[super pointInside:point withEvent:event]);
16 //    return [super pointInside:point withEvent:event];
17     return NO;
18 
19 }

这样就可以看到如果是绿色的view先添加,那么会先调用红色的point Inside方法,如果这个时候把红色View上的所有View都重写这个方法,并且返回YES,那么绿色View的touch事件就不会被接收了,这个时候就相当于把事件强制接收了。注意在实际开发中一般不这样写,一般重写这个pointInside方法是为了避开子控件而让父控件去响应touch事件,这时返回NO,如果没有这样的需求就不必重写这个方法,如果真需要重写就返回父类的[super pointInside:point withEvent:event];

IOS事件传递和处理中的细节问题

标签:

原文地址:http://www.cnblogs.com/Mike-Fighting/p/4695530.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!