我尝试在视图控制器中使用自定义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
。在那之后,我应该拿起我的手指再次拖动。然后只有我收到开始并继续跟踪代表
答案 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;
}