【发布时间】:2014-02-13 11:53:08
【问题描述】:
我尝试在我的视图控制器中使用自定义 UIControl。我的自定义类继承了UIControl 并为我的自定义控件分配实例并通过以下代码添加到我的视图控制器的视图中
CustomControl *customControl = [[CustomControl alloc]initWithFrame:CGRectMake(44, 388, 235, 160)];
[self.view addSubview:customControl];
然后我在CustomControl中实现以下委托方法
- (BOOL) beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event;
- (BOOL) continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event;
- (void) endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event;
- (void)cancelTrackingWithEvent:(UIEvent *)event
我面临的问题是,当我在控件内部进行跟踪时 -(void)cancelTrackingWithEvent:(UIEvent *)event 被调用之后,- (BOOL) continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event 方法没有被调用。那么为什么会调用这个方法- (void)cancelTrackingWithEvent:(UIEvent *)event...
我读过文件说,//如果由于非事件原因取消事件可能为零,例如从窗口中删除但无法理解确切的场景 提前致谢。
我总是只返回YES。 我实现的代表是:
- (BOOL) beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event{
[super beginTrackingWithTouch:touch withEvent:event];
NSLog(@"Touch begins");
return YES;
}
- (BOOL) continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event{
[super continueTrackingWithTouch:touch withEvent:event];
NSLog(@"Touch continous");
return YES;
}
- (void) endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event{
[super endTrackingWithTouch:touch withEvent:event];
NSLog(@"Touch ends");
}
- (void)cancelTrackingWithEvent:(UIEvent *)event
{
NSLog(@"Touch cancelled due to remove from window");
}
【问题讨论】: