UISwipeGestureRecognizer:如何强制touchesMoved停止并进入touchesEnded

时间:2012-11-22 22:33:04

标签: xcode ios5 rotation uigesturerecognizer touchesmoved

我正在使用UISwipeGestureRecognizer。我有以下问题。当我触摸一个正方形时,它开始旋转。当我停止触摸它时,它停止旋转。我想用计时器,当它通过10秒的触摸时,方块自动停止旋转。我找到了一个解决方案,但我认为这不是很干净。 您是否有任何想法从该方法自动传递:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

方法:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

我正在使用此代码:

  - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
if ([self state] == UIGestureRecognizerStatePossible) {
      [self setState:UIGestureRecognizerStateBegan];
       NSLog(@"Algo Began");

   } 

    if ([[event touchesForGestureRecognizer:self] count] > 1)
    {
        [self setState:UIGestureRecognizerStateCancelled ];
        NSLog(@"Algo Fail");

    }


    if (chowMuch==50) {
        //[self setState:UIGestureRecognizerStateFailed  ]; 
        [self setState:UIGestureRecognizerStateRecognized  ]; 


        NSLog(@"Algo falla que pasara");
    }

   else {
      [self setState:UIGestureRecognizerStateChanged];
       NSLog(@"Algo changed");

}
}

该方法始终执行NSLog(@"Algo changed"),这意味着当我触摸方块时状态为UIGestureRecognizerStateChanged,但当chowMuch为50时,此结束。您是否有任何想法转到touchesEnded

1 个答案:

答案 0 :(得分:-1)

尝试删除并重新添加接收(或响应)触摸的子视图。

由于有人对答案进行了低估:即使用户从不抬起手指,上方也会取消手势。我已经找了一段时间但找不到另一种解决方案。

当然,这不适合更复杂的任务。 另请参阅UIScrollView and cancel a zooming pinch gesture