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

      1.当触摸被取消(比如触摸过程中被来电打断),就会调用touchesCancelled:withEvent方法。

      2.检测tapCount可以放在touchesBegan也可以touchesEnded,不过一般后者跟准确,因为touchesEnded可以保证所有的手指都已经离开屏幕,这样就不会把轻击动作和按下拖动等动作混淆。

      3.轻击操作很容易引起歧义,比如当用户点了一次之后,并不知道用户是想单击还是只是双击的一部分,或者点了两次之后并不知道用户是想双击还是继续点击。为了解决这个问题,一般可以使用“延迟调用”函数。

    -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
    {
        UITouch *touch =  [touches anyObject];
        if(touch.tapCount == 1)
        {
            [self performSelector:@selector(setBackground:) withObject:[UIColor blueColor] afterDelay:2];
            self.view.backgroundColor = [UIColor redColor];
        }
    }
    

      上面代码表示在第一次轻击之后,没有直接更改视图的背景属性,而是通过performSelectorwithObjectafterDelay:方法设置2秒中后更改。

    -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
    {
        UITouch *touch =  [touches anyObject];
        if(touch.tapCount == 2)
        {
            [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(setBackground:) object:[UIColor redColor]];
            self.view.backgroundColor = [UIColor redColor];
        }
    }
    

      双击就是两次单击的组合,因此在第一次点击的时候,设置背景色的方法已经启动,在检测到双击的时候先要把先前对应的方法取消掉,可以通过调用NSObject类的cancelPreviousPerformRequestWithTarget:selector:object方法取消指定对象的方法调用,然后调用双击对应的方法设置背景色为红色。

     

    参考:iOS Programming – 触摸事件处理(2)

  • 相关阅读:
    Web项目的WEB-INF目录使用说明以及重定向与转发
    HTTP中的重定向和请求转发的区别
    001杰信-创建MyEclipse与maven项目
    009Maven_建立私服——报错问题
    008Maven_建立私服
    007Maven_在Myeclipse创建web项目
    006Maven_在Myeclipse创建java项目
    005Maven_Myeclipse和Maven整合
    微服务架构下分布式事务方案
    推荐:Java性能优化系列集锦
  • 原文地址:https://www.cnblogs.com/pure/p/2467876.html
Copyright © 2011-2022 走看看