zoukankan      html  css  js  c++  java
  • 触摸事件

    第一:触控事件的基本概念:

          事件是当用户手指触击屏幕及在屏幕上移动时,系统不断发送给应用程序的对象;

          系统将事件按照特定的路径传递给可以对其进行处理的对象;

          在IOS中,一个UITouch对象表示一个触摸,一个UIEvent对象表示一个事件;

          事件对象中包含与当前多点触摸序列相对应的所有触摸对象,还可以提供与特定视图或窗口相关联的触摸对象;

     第二:触控的开始,移动和结束:

           触摸所包含的信息有时间和空间两方面:

           时间方面的信息称为阶段,表示触摸是否刚刚开始,是否正在移动或处于静止状态以及何时结束;

           触摸信息还包括当前在视图或窗口中的位置信息,以及之前的位置信息;

           当一个手指接触屏幕时,触摸就和某个窗口或视图关联在一起,这个关联在事件的整个生命周期都会得到维护;

    第三:触控与多点触控:

            当手指接触到屏幕,不管是单点触摸还是多点触摸,事件都会开始,直到用户所有的手指都离开屏幕;

            触摸对象UITouch类常用属性:

            view:触摸产生时所处的视图,由于视图可能发生变化,当前视图也不一定是最初的视图;

            tapCount:轻击操作和鼠标的单价操作类似,tapCount表示短时间内轻击屏幕的次数,因此可以根据tapCount判断单击,双击,或更多的轻击;

            phase:触摸事件在屏幕上有一个周期,即触摸开始,触摸点移动,触摸结束,还有中途取消;

    触控事件响应链:

          所有事件响应的类都实UIResponder的子类,它能接收处理事件。

          处理触摸的四个方法:

    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event     
    {  
         //触摸开始
        NSLog(@"touchesBegan");  
    }  
      
    -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event     
    {  
        //触摸移动
        NSLog(@"touchesMoved");  
    }  
      
    -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event   
    {  
         //触摸结束
        NSLog(@"touchesEnded");  
    }  
      
    -(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event    
    {  
    //如系统决定取消此次触摸,那可能就不调用touchesEnded方法了,在这种情况下会调用touchesCancelled方法  
        NSLog(@"touchesCancelled");  
    }  

      

    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event     
    {  
         //触摸开始
        NSLog(@"touchesBegan");  
    
        //获取第一次进行手势或轻击
        UITouch *touch = [touches anyObject];
       //获取某个视图的触摸
       UITouch *myTouches = [event touchesForView:self.view];
       //获取点击的位置
        CGPoint beginPoint = [touch locationInView:self];
    
    }  

        对应响应链有以下规则:

         第一响应者就是响应链的开始;

         以UIResponder为父类的任何类都是响应者;

         如果第一响应者不处理某个事件,则将该事件传递到响应者链的下一级,一般情况下如果下一级处理,则停止事件的传递;

         如果事件通过整个响应者链并且没有对象处理该事件,则丢弃该事件

        响应者链传递的顺序总结:

        第一响应者几乎总是视图或控件,并且首先对事件进行响应;

        如果第一响应者不处理,则传递给其他视图控制器,如果仍不处理则传递给第一响应者的父视图;

        如果父视图没有处理,则转给父视图的控制器;

        如果一直传递下去而没有环节去处理,则一直传递到应用程序的窗口;

        如果窗口不处理,则将传递给应用程序委托,如果应用程序委托不是UIResponder子类或不处理,则事件被丢弃;

        如果事件通过整个响应者链并且没有对象处理该事件,则丢弃该事件;

        

         

  • 相关阅读:
    HighTec-Eclipse for Tricore 的安装方法
    http升级https遇到的问题
    symfony中模板生成路径两种方式
    http请求在https中使用
    git tag标签
    Git查看两个版本之间修改了哪些文件
    mysql将语句写入表中
    使用fiddler抓包模拟器及配置fiddler过滤
    Mixed Content: The page at 'xxx' was loaded over HTTPS, but requested an insecure resource 'xxx'.
    nginx 禁止某IP访问
  • 原文地址:https://www.cnblogs.com/taopengcun/p/3735110.html
Copyright © 2011-2022 走看看