zoukankan      html  css  js  c++  java
  • iOS-同时识别多种触摸事件,触摸事件不共享问题

    触摸事件不共享问题

    在iOS中,当某个触摸事件被UIGestureRecongnizer对象识别出来,就会“吃掉”所有相关的触摸事件,导致其他UIGestureRecongnizer对象无法识别出这个事件

    解决方法:代理

    1.UIView的子类

     

    self.panGestureRecognizer=
    
            [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(pan:)];
    
            self.panGestureRecognizer.delegate = self;
    
            self.panGestureRecognizer.cancelsTouchesInView=NO;
    
            [self addGestureRecognizer:self.panGestureRecognizer];

    其中 cancelsTouchesInView 默认设置为YES,设置为YES的时候,该对象在识别出某个手势后,会“吃掉”跟手势有关的UITouch对象,这样对象所依附的UIView对象将无法接受到相关 Responder消息。例如,touchBegin:withEven

    2.实现

    gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer: 方法

    当gesture recognizer 识别出手势,同时其他gesture recognizer也识别出手势,geesture recongnizer 会向协议代理发送消息,如果该方法返回YES,recognizer 会跟其他gesture recognizer 共享手势

    -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
    
    {
    
        if (gestureRecognizer==self.panGestureRecognizer) {
    
            return  YES;
    
        }
    
        return NO;
    
    }

    状态

    • UIGestureRecognizerStateBegan: 当手指移动时,gestureRecognizer就会进入此状态,持续向target发送消息(action)
    • UIGestureRecognizerStateChanged:当手指移动时,gestureRecognizer就会进入此状态,持续向target发送消息(action)
    • UIGestureRecognizerStateEnded: 当手指离开屏幕的时候,gestureRecognizer对象会切换至结束状态,向target发送最后一次消息
  • 相关阅读:
    Linux中OCI开发库的配置
    makefile中的gcc -o $@ $^是什么意思?
    【转】gcc中的-w -W和-Wall选项
    【转】Linux查看系统是32位还是64位方法总结
    【转】gcc命令中参数c和o混合使用的详解
    Python2.7设置在shell脚本中自动补全功能的方法
    Python3设置在shell脚本中自动补全功能的方法
    Pyqt图标下载网站
    如何使QLineEdit禁止编辑
    python偏函数的运用
  • 原文地址:https://www.cnblogs.com/sueZheng/p/4890714.html
Copyright © 2011-2022 走看看