【问题标题】:How to avoid Touches cancelled event?如何避免 Touches 取消事件?
【发布时间】:2011-04-28 12:37:18
【问题描述】:

我有两个视图,一个在另一个之下。我通过顶视图的触摸感应来旋转下面的视图。在尝试进行滑动时,在触摸结束事件之前调用触摸取消事件。在移动手指时,开始触摸并调用触摸移动事件,然后在最后(大部分)调用触摸结束事件。但有时在尝试缓慢移动时,触摸取消事件称为停止触摸事件发生。所以我不能低速旋转视图。可能是什么问题?如何避免碰取消事件?

注意:我正在使用 core-plot 库在视图中绘制一些图表。

【问题讨论】:

    标签: ios cocoa-touch uitouch touchescancelled


    【解决方案1】:

    如果您使用任何UIGestureRecognizers,它们会在识别出他们的手势时自动取消对其他视图的触摸。您可以使用识别器的cancelsTouchesInView 属性关闭此行为。

    【讨论】:

      【解决方案2】:

      如果您不直接使用 UIGestureReconizer,请注意 UITouch 的属性 gestureRecognizers。 我有同样的问题,我用这段代码解决了它:

      if (event.type == UIEventTypeTouches)
      {
          NSSet* tmpTouches = [event  touchesForView:m_PhotoView];
          if ([tmpTouches count] == 2)
          {
              UITouch *tmpTouch1 = [[tmpTouches allObjects] objectAtIndex:0];
              UITouch *tmpTouch2 = [[tmpTouches allObjects] objectAtIndex:1];
              if ((tmpTouch1 != nil)&&(tmpTouch2 != nil))
              {
                  UIGestureRecognizer * tmpG;
                  if ([tmpTouch1.gestureRecognizers count] > 0)
                  {
                      tmpG = [tmpTouch1.gestureRecognizers objectAtIndex:0];
                      tmpG.cancelsTouchesInView = NO;
                  }
                  if ([tmpTouch2.gestureRecognizers count] > 0)
                  {
                      tmpG = [tmpTouch2.gestureRecognizers objectAtIndex:0];
                      tmpG.cancelsTouchesInView = NO;
                  }
                  // Code ...
              }
          }
      }
      

      【讨论】:

      • 这非常适合我所需要的,因为我没有使用手势识别器,它禁止所有取消事件破坏我原本流畅的动作。谢谢pocjoc。
      • 我没有使用手势,但我不明白 tmpTouches 计数为 2 和硬编码索引值的重要性。你能解释一下吗?
      【解决方案3】:

      也要注意 UISwipeGestureRecognizer。这对我来说是造成问题的原因,一旦我们设置就解决了

      [recognizer setCancelsTouchesInView:FALSE];
      

      【讨论】:

        【解决方案4】:

        如果涉及到滚动视图取消选中它的属性内容在storybord中触摸Can Cancel On Scroll

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-06-13
          • 1970-01-01
          • 2023-03-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多