美文网首页
app生命周期、控制器生命周期和事件传递、响应

app生命周期、控制器生命周期和事件传递、响应

作者: boy丿log | 来源:发表于2019-06-12 18:56 被阅读0次

    生命周期

    app生命周期

    app生命周期

    控制器生命周期

    控制器生命周期

    事件

    touch事件和手势

    触摸事件首先传递到手势上,如果手势识别成功,就会取消事件的继续传递,否则,事件还是会被响应链处理。具体地,系统维持了与响应链关联的所有手势,事件首先发给这些手势,然后再发给响应链。
    让手势向下传递需要实现以下方法

    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch  
    {  
         // 若为UITableViewCellContentView(即点击了tableViewCell),
        if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {  
        // cell 不需要响应 父视图的手势,保证didselect 可以正常
            return NO;  
        }  
        //默认都需要响应
        return  YES;  
    }
    

    传递链

    接收到触摸事件后,会从UIApplication->widow->view去寻找最合适的view,

    1. 首先判断主窗口(keyWindow)自己是否能接受触摸事件
    2. 判断触摸点是否在自己身上
    3. 子控件数组中从后往前遍历子控件,重复前面的两个步骤(所谓从后往前遍历子控件,就是首先查找子控件数组中最后一个元素,然后执行1、2步骤)
    4. 如果没有符合条件的子控件,那么就认为自己最合适处理这个事件,也就是自己是最合适的view。

    即,响应链式从子视图到父视图的。

    //先调用,如果hitTest:withEvent:方法中返回nil,那么调用该方法的控件本身和其子控件都不是最合适的view,也就是在自己身上没有找到更合适的view。那么最合适的view就是该控件的父控件。
    - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event;
    //后调用,判断点在不在当前view上(方法调用者的坐标系上)如果返回YES,代表点在方法调用者的坐标系上;返回NO代表点不在方法调用者的坐标系上,那么方法调用者也就不能处理事件。
    - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event;
    

    从传递链开始调用这两个方法。即父视图调用->子视图调用。

    不能触摸事件的三种情况
    • userInteractionEnabled = NO
    • 如果把父控件隐藏,那么子控件也会隐藏,隐藏的控件不能接受事件
    • 如果设置一个控件的透明度<0.01,会直接影响子控件的透明度。alpha:0.0~0.01为透明。

    传递过程

    • 如果当前view是控制器的view,那么控制器就是上一个响应者,事件就传递给控制器;如果当前view不是控制器的view,那么父视图就是当前view的上一个响应者,事件就传递给它的父视图
    • 在视图层次结构的最顶级视图,如果也不能处理收到的事件或消息,则其将事件或消息传递给window对象进行处理
    • 如果window对象也不处理,则其将事件或消息传递给UIApplication对象
    • 如果UIApplication也不能处理该事件或消息,则将其丢弃

    UIView动画与CoreAnimation区别

    UIView动画其实就是对Core Animation的一种封装,向客户程序员呈现更简洁的接口。
    UIView是CALayer的代理。在block外面,这个方法将返回一个NSNull(是尖括号的null,nil打印出来是圆括号的null),而在block里面返回了一个叫做UIViewAdditiveAnimationAction类的对象,这个类是一个私有类,遵循了苹果一罐的命名规范: xxAction,一定就是一个实现了CAAction协议的对象了。

    相关文章

      网友评论

          本文标题:app生命周期、控制器生命周期和事件传递、响应

          本文链接:https://www.haomeiwen.com/subject/ozvffctx.html