0

私はiPadアプリに取り組んでいます。Myには、サイズが 500wx500hUIViewControllerのカスタムのみが含まれています。UIView

カスタム全体に触れると touches メソッドを呼び出し、その内部に触れるとカスタムtouches メソッドを呼び出すために、UIViewControllerと customの両方に touches メソッドを実装しました。UIViewUIViewControllerUIViewUIView

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 タッチ 移動:

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

UIView指を動かしてカスタムに触れているCUSTOM VIEWと、画面上で指を離すまで記録されます。一方、カスタム UIView の外に触れているUIVIEWCONTROLLERときは、 touchesMoved メソッドで が 1 回だけ呼び出されます。

私は何か間違っていますか?

編集: UIViewController touchesMoved メソッドにログを追加しました。カスタム ビュー内をタッチすると、すべてのタッチ フェーズ中に TEST がログに記録されます。しかし、外に触れると、同じ動作になります。

4

2 に答える 2

0

ビューに ExclusiveTouch プロパティを追加して、マルチタッチを無効にします

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

self.view がタッチをインターセプトして処理している可能性があるため、View Controller に到達しません。2 つのことのいずれか (または両方) を試して、動作するかどうかを確認できます。

  1. self.view.exclusiveTouch = NO;

  2. self.view.userInteractionEnabled = NO;

私も電話してみます[super touchesMoved: touches withEvent: event];

それが役に立てば幸い。

于 2013-01-09T10:09:06.143 に答える