Ios UIViewController和UIView中的触摸方法
我正在开发iPad应用程序。MyIos UIViewController和UIView中的触摸方法,ios,objective-c,drawing,touches,touchesmoved,Ios,Objective C,Drawing,Touches,Touchesmoved,我正在开发iPad应用程序。MyUIViewController仅包含一个大小为500wx500h的自定义UIView 我在UIViewController和自定义UIView中实现了touch方法,以便当我们在自定义UIView周围进行触摸时调用UIViewController触摸方法,当我们在其中触摸时调用自定义UIView触摸方法 UIViewController触摸已移动: - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent
UIViewController
仅包含一个大小为500wx500h的自定义UIView
我在UIViewController
和自定义UIView
中实现了touch方法,以便当我们在自定义UIView
周围进行触摸时调用UIViewController
触摸方法,当我们在其中触摸时调用自定义UIView
触摸方法
UIViewController触摸已移动:
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint point = [touch locationInView:self.view];
NSLog(@"TEST"); // Added during edition
if (!CGRectContainsPoint(self.drawingView.frame, point)) {
NSLog(@"UIVIEWCONTROLLER");
}
}
自定义UIView已移动:
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"CUSTOM VIEW");
}
当我触摸自定义ui视图
移动手指时,自定义视图
会被记录,直到我在屏幕上取下手指为止。另一方面,当我在自定义UIView外部触摸时,在TouchsMoved方法中,UIVIEWCONTROLLER
只被调用一次
我错过什么了吗
编辑:我在我的UIViewController TouchsMoved方法中添加了一个日志。当我在自定义视图内触摸时,它会记录所有触摸阶段的测试。但是当我在外部触摸时,我会得到相同的行为。将exclusiveTouch属性添加到视图中以禁用多重触摸
your view.exclusiveTouch=YES;
您的self.view很可能正在拦截和处理触摸,因此它们无法通过视图控制器。您可以尝试做两件事中的一件(或两件都做),看看它是否有效:
self.view.exclusiveTouch=否代码>
self.view.userInteractionEnabled=否代码>
[super-touchsmoved:touchswithevent:event]代码>
希望有帮助。什么是drawingView
?您说过您的控制器只有一个视图,但它至少应该有两个:self.view
和drawingView
。。。可能是前者正在劫持触摸?我的UIViewController包含他自己的视图和另一个自定义UIView(称为drawingView)。我尝试先在自定义视图上设置它,然后在UIViewController视图上设置它,但两者都不起作用:/self.view.exclusiveTouch=NO代码>无效。但是self.view.userInteractionEnabled=NO代码>对bahaviour做了一点改进。我没有得到一个UIViewController
log,而是得到了7个UIViewController
。触摸方法似乎只被调用了7次,然后停止调用。你明白为什么吗/正如我所说,有一些观点截获了这些接触。我认为您还应该尝试调用super
实现touchesMoved
。。。也许不调用它可能会使触摸在一段时间后在控制器代码中“消失”。顺便说一句,你没有解释你想要实现什么。。。也许有更好更简单的方法。。。