zoukankan      html  css  js  c++  java
  • UITapGestureRecognizer 的用法(轻触手势识别器)

    最近在项目中用到了手势操作,键盘回收时还是挺常用的,现在总结下,多谢网络上大神们的分享。

    先分享下我在项目中用的代码:

    UITapGestureRecognizer * mytap=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tap_gestureRecognizer:)];
    [self addGestureRecognizer:mytap];
    [mytap release];
    
    //收回键盘
    -(void)tap_gestureRecognizer:(UITapGestureRecognizer *)tap_gest
    {
        [self.scv_stockPriceTextField resignFirstResponder];
        [self.scv_stockAmoutTextField resignFirstResponder];
    }
    
    
    
    
    //单指单击
     UITapGestureRecognizer *singleFingerOne = [[UITapGestureRecognizer alloc] initWithTarget:self
     action:@selector(handleSingleFingerEvent:)];
     singleFingerOne.numberOfTouchesRequired = 1; //手指数
     singleFingerOne.numberOfTapsRequired = 1; //tap次数
     singleFingerOne.delegate = self;
     //单指双击
     UITapGestureRecognizer *singleFingerTwo = [[UITapGestureRecognizer alloc] initWithTarget:self
     action:@selector(handleSingleFingerEvent:)];
     singleFingerTwo.numberOfTouchesRequired = 1;
     singleFingerTwo.numberOfTapsRequired = 2;
     singleFingerTwo.delegate = self;
     //双指单击
     UITapGestureRecognizer *doubleFingerOne = [[UITapGestureRecognizer alloc] initWithTarget:self
     action:@selector(handleDoubleFingerEvent:)];
     doubleFingerOne.numberOfTouchesRequired = 2;
     doubleFingerOne.numberOfTapsRequired = 1;
     doubleFingerOne.delegate = self;
     UITapGestureRecognizer *doubleFingerTwo = [[UITapGestureRecognizer alloc] initWithTarget:self
        action:@selector(handleDoubleFingerEvent:)];
     doubleFingerTwo.numberOfTouchesRequired = 2;
     doubleFingerTwo.numberOfTapsRequired = 2;
     doubleFingerTwo.delegate = self;
     //如果不加下面的话,当单指双击时,会先调用单指单击中的处理,再调用单指双击中的处理
     [singleFingerOne requireGestureRecognizerToFail:singleFingerTwo];
     //同理双指亦是如此
     [doubleFingerOne requireGestureRecognizerToFail:doubleFingerTwo];
     [self.view addGestureRecognizer:singleFingerOne];
     [self.view addGestureRecognizer:singleFingerTwo];
     [self.view addGestureRecognizer:doubleFingerOne];
     [self.view addGestureRecognizer:doubleFingerTwo];
     [singleFingerOne release];
     [singleFingerTwo release];
     [doubleFingerOne release];
     [doubleFingerTwo release];
    
    处理事件的方法,代码:
    1: //处理单指事件 2: - (void)handleSingleFingerEvent:(UITapGestureRecognizer *)sender 3: { 4: if (sender.numberOfTapsRequired == 1) { 5: //单指单击 6: NSLog(@"单指单击"); 7: }else if(sender.numberOfTapsRequired == 2){ 8: //单指双击 9: NSLog(@"单指双击"); 10: } 11: } 12: //处理双指事件 13: - (void)handleDoubleFingerEvent:(UITapGestureRecognizer *)sender 14: { 15: if (sender.numberOfTapsRequired == 1) { 16: //双指单击 17: NSLog(@"双指单击"); 18: }else if(sender.numberOfTapsRequired == 2){ 19: //双指双击 20: NSLog(@"双指双击"); 21: } 22: }

    将相应代码复制到你的工程中即可使用,由于代码中已经有详细的解释说明,这里就不在重复解释了。

    代码中只是列举了单指与双指对于单击或多击的处理,同理多指的操作需修改numberOfTouchesRequired属性,对点击的次数需修改numberOfTapsRequired属性。

    对于其他手势例如UISwipeGestureRecognizerUILongPressGestureRecognizer,UILongPressGestureRecognizer 的操作使用类似处理。

    UIKit中包含了UIGestureRecognizer类,用于检测发生在设备中的手势。UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,它有下面一些子类用于处理具体的手势: 

        1、拍击UITapGestureRecognizer (任意次数的拍击)  
        2、向里或向外捏UIPinchGestureRecognizer (用于缩放)  
        3、摇动或者拖拽UIPanGestureRecognizer  
        4、擦碰UISwipeGestureRecognizer (以任意方向)  
        5、旋转UIRotationGestureRecognizer (手指朝相反方向移动)  
        6、长按UILongPressGestureRecognizer 

    对于不同类型的手势识别器,具有不同的配置属性。比如UITapGestureRecognizer,可以配置拍击次数。界面接收到手势之后,可以发送一 个消息,用于处理响应手势动作后的任务。当然,不同的手势识别器,发送的消息方法也会有所不同。

  • 相关阅读:
    ruby on rails入门基础
    医学界的一个阴谋——近视手术
    30岁前挣够500万
    学习数学的意义
    针对 NetBeans IDE 7.1 的 Ruby 开发插件发布
    人的一生
    Rails常用命令整理
    穷人为什么穷?富人为什么富?
    NetBeans的(默认)快捷键
    IT界那些性感的让人尖叫的程序员
  • 原文地址:https://www.cnblogs.com/jiuyi/p/10345170.html
Copyright © 2011-2022 走看看