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

  • 相关阅读:
    48、Windows驱动程序模型笔记(六),同步
    44、Windows驱动程序模型笔记(二)
    JavaP:对象创建
    JavaP:继承和多态【只有提纲】
    ASP.NET MVC:一个简单MVC示例
    JavaP: 2、类和对象
    ASP.NET MVC:解析 MVC+ADO.NET Entity(实体类)
    Oracle: 一、Oracle简介,安装,基本使用,建表增删改查,数据类型及常用命令
    JavaP:面向对象编程
    ASP.NET: PagedDataSource
  • 原文地址:https://www.cnblogs.com/CLiOS/p/5290711.html
Copyright © 2011-2022 走看看