zoukankan      html  css  js  c++  java
  • 关于多种手势问题

    关于多种手势,区分的问题。

     

    IOS 中常有的手势:

     

    1.单击手势,双击搜索     Tap

    2.长按手势                     Long

    3.划动手势               Swipe

    4.旋转手势                     Rotation

    5.捏合手势              Pinch

    6.拖动手势                     Pan

     

    关于多种手势识别,区分的问题。

     

    /////特别强调下,在一个对象上面同时有 单击手势  双击手势 的时候

    如何区分 它们了?

     

    最简单的办法:(此方法用来设置优先级)

    [singleTapGesture requireGestureRecognizerToFail:doubleTapGesture];

     

    说明上面的方法: 只有 双击手势 识别失败后,则 才识别 单击手势。

     

    以此来设置优先级。区分不同的手势。

     

    参考博文:

    http://www.winddisk.com/2012/10/17/detect_double_tap_single_tap/

    http://blog.csdn.net/likendsl/article/details/7554150

     

    /////下面的内容很重要,对于区分手势

     

    不过有些手势是关联的,怎么办呢?例如 Tap 与 LongPress、Swipe与 Pan,或是 Tap 一次与Tap 兩次。

    手势识别是具有互斥的原则的,比如单击和双击,如果它识别出一种手势,其后的手势将不被识别。所以对于关联手势,要做特殊处理以帮助程序甄别,应该把当前手势归结到哪一类手势里面。

    比如,单击和双击并存时,如果不做处理,它就只能发送出单击的消息。为了能够识别出双击手势,就需要做一个特殊处理逻辑,即先判断手势是否是双击,在双击失效的情况下作为单击手势处理。使用

    [A requireGestureRecognizerToFail:B]函数,它可以指定当A手势发生时,即便A已经滿足条件了,也不会立刻触发,会等到指定的手势B确定失败之后才触发。

     

    可能会遇到的问题

     

    http://blog.sina.com.cn/s/blog_bf9eee6f0101izxh.html

     

    ////////////////很重要

    首先让UITapGestureRecognizer不要吃掉子窗口的事件:

    tapGesture.cancelsTouchesInView = NO; (这是一个比较关键的问题)然后设置自身的代理:tapGesture.delegate = self;最后实现代理里面这个方法:// called before touchesBegan:withEvent: is called on the gesture recognizer for a new touch. return NO to prevent the gesture recognizer from seeing this touch- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{        // 过滤掉UIButton,也可以是其他类型    if ( [touch.view isKindOfClass:[UIButton class]])    {        return NO;    }        return YES;}

  • 相关阅读:
    汉语-词语-平目:百科
    汉语-词语-平昔:百科
    汉语-词语-平一:百科
    汉语-词语-平居:百科
    汉语-词语-平展:百科
    汉语-词语-平静:百科
    汉语-词语-平心:百科
    汉语-词语-平庸:百科
    汉语-词语-平常:百科
    1231 最优布线问题
  • 原文地址:https://www.cnblogs.com/kevingod/p/3375488.html
Copyright © 2011-2022 走看看