0

我正在开发 iPad 应用程序。我只包含一个大小为 500wx500hUIViewController的自定义。UIView

我在 theUIViewController和 customUIView中都实现了 touches 方法,以便UIViewController在我们触摸 custom 周围时调用 touches 方法,UIView并在我们触摸它内部时调用 custom UIViewtouches 方法。

UIViewController touchesMoved :

- (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 触摸 Moved :

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    NSLog(@"CUSTOM VIEW");
}

当我触摸自定义UIView移动手指时,CUSTOM VIEW会记录下来,直到我移开屏幕上的手指。另一方面,当我在自定义 UIView 之外进行触摸UIVIEWCONTROLLER时,在 touchesMoved 方法中只调用了一次。

我错过了什么吗?

编辑:我在 UIViewController touchesMoved 方法中添加了一个日志。当我在自定义视图中触摸时,它会在所有触摸阶段记录测试。但是当我触摸外面时,我会得到同样的行为。

4

2 回答 2

0

将 ExclusiveTouch 属性添加到您的视图以禁用多点触控

your view.exclusiveTouch=YES;
于 2013-01-09T09:55:53.227 回答
0

您的 self.view 可能会拦截触摸并处理它们,因此它们不会到达视图控制器。您可以尝试做两件事中的任何一件(或两者都做),看看它是否有效:

  1. self.view.exclusiveTouch = NO;

  2. self.view.userInteractionEnabled = NO;

我也会尝试打电话[super touchesMoved: touches withEvent: event];

希望能帮助到你。

于 2013-01-09T10:09:06.143 回答