zoukankan      html  css  js  c++  java
  • 常见的事件传递

    事件响应与传递

     UIResponder 

     1.首先要找到在链状结构中,最为适合处理事件相应的组件,如果该组件对事件进行到了处理,那么该事件传递(告一段路),如果最为适合相应该事件的组件没有重写(UIResponder方法),那么他会想回找第二适合处理用户相应事件的组件,如果在一个链状结构中没有任何一个组件处理用户的触控事件,那么该事件将被丢弃

     UIApplication-Appdelgate->UIWindow->UIViewController->(UIView默认视图)->GPGreenView(UIResponder)

      UIApplication-Appdelgate->UIWindow->UIViewController->(UIView默认视图)->//GPGreenView(UIResponder)->(redView)



    一旦用户触摸到了屏幕,就会立即执行touchesBegan

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

    -----------------------------

    例 touchesBegan:

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

    {

        //UITouch 用户的手指,用户手指触控到屏幕,系统就会自动创建一个UITouch对象,并且在内部记录下来用户,触控的位置

        //UITouch对象被存储在 touches 中

        UITouch * touch = [touches anyObject];

        

        //参考当前(自己)视图的坐标系,用户的触控位置应该在哪里

        CGPoint currentPoint = [touch locationInView:self];

        NSLog(@"point %@",NSStringFromCGPoint(currentPoint));

        NSLog(@"%@ %@,%@",_name,NSStringFromClass([self class]),NSStringFromSelector(_cmd));

    }

    -----------------------------

    只要用户触控发生移动,就会立即调用

    - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

    -----------------------------

    例 touchesMoved:

    - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

    {

        NSLog(@"%@ %@,%@",_name,NSStringFromClass([self class]),NSStringFromSelector(_cmd));

        //touchesMoved 方法中

        //1.可以获得手指当前坐标位置

        //2.可以获得移动之前的一个位置

        UITouch * touch = [touches anyObject];

        

        CGPoint  currentPoint = [touch locationInView:self];

        CGPoint  prePoint = [touch previousLocationInView:self];

         NSLog(@"currentpoint %@,prePoint %@",NSStringFromCGPoint(currentPoint),NSStringFromCGPoint(prePoint));

        

        跟随操作

        //1.手指在屏幕上移动的差值

        //2.让Frame,x,y坐标增加差值范围

        //3.更新Frame

        CGRect rect = self.frame;

        rect.origin.x += currentPoint.x - prePoint.x;

        rect.origin.y += currentPoint.y - prePoint.y;

       

    }

    ---------------------------------- 

     用户手指离开屏幕,就会立即触发

    - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

     

    如果用户的操作,被系统功能打断的时候会触发,来电话

    - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event

  • 相关阅读:
    Java实现 LeetCode 69 x的平方根
    Java实现 LeetCode 68 文本左右对齐
    Java实现 LeetCode 68 文本左右对齐
    Java实现 LeetCode 68 文本左右对齐
    Java实现 LeetCode 67 二进制求和
    Java实现 LeetCode 67 二进制求和
    Java实现 LeetCode 67 二进制求和
    Java实现 LeetCode 66 加一
    Java实现 LeetCode 66 加一
    CxSkinButton按钮皮肤类
  • 原文地址:https://www.cnblogs.com/CLiOS/p/5290711.html
Copyright © 2011-2022 走看看