cancelTrackingWithEvent被调用甚至触摸委托返回YES

时间:2014-02-15 05:28:18

标签: ios uitouch

我尝试在视图控制器中使用自定义UIControl。我的自定义类,它是UIControl的子类,并为我的自定义控件分配实例,并通过以下代码添加到我的视图控制器视图中

我已经实施了以下代表,这些代表返回 YES 以确保连续触摸。

 - (BOOL) beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event{
        [super beginTrackingWithTouch:touch withEvent:event];
        return YES;
    }

    - (BOOL) continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event{
        [super continueTrackingWithTouch:touch withEvent:event];
        return YES;
    }

    - (void) endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event{
        [super endTrackingWithTouch:touch withEvent:event];
    }

    - (void)cancelTrackingWithEvent:(UIEvent *)event
    {
        NSLog(@"Touch cancelled");
    }

但是在我跟踪时会调用- (void)cancelTrackingWithEvent:(UIEvent *)event。在那之后,我应该拿起我的手指再次拖动。然后只有我收到开始并继续跟踪代表

1 个答案:

答案 0 :(得分:1)

根据您的问题,在跟踪时,cancelTrackingWithEvent:会被调用。对。使用Gesture回拨查看您的观看次数或超级浏览量。如果您添加了pan Gesture,则会出现此类问题。这是您的控制触摸begin and get tracked upto this tracking change to panning

要解决此问题,请将标记设置为您的视图并取消手势调用,如下所示。

在视图创建过程中

yourView.tag = CANCELVIEWTAG;

如果您的视图中发生了触摸,请取消手势。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {

    if (touch.view.tag == CANCELVIEWTAG) {
        return NO;
    }
    return YES;
}