0

UIButton に複数の IBAction がアタッチされています。次のコードを追加するまで、IBActions は正常に動作します。

- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"View Did Load");
    [self addGestureRecognizersToView:drawImage];
}

そのコードのチャンクを追加した後、IBActions は起動しません。UIButtons に触れると強調表示されますが、IBAction コードはヒットしません。

ここに私の addGestureRecognizers コードがあります:

- (void)addGestureRecognizersToView:(UIImageView *)theView {
    UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
    [panGesture setMaximumNumberOfTouches:2];
    [panGesture setMinimumNumberOfTouches:1];
    //panGesture.delegate = drawImage;
    [theView addGestureRecognizer:panGesture];
    [panGesture release];

    UITapGestureRecognizer *doubleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];
    [doubleFingerTap setNumberOfTapsRequired:2];
    [self.view addGestureRecognizer:doubleFingerTap];
    [doubleFingerTap release];

    UITapGestureRecognizer *singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
    [singleFingerTap setNumberOfTapsRequired:1];
    [self.view addGestureRecognizer:singleFingerTap];
    [singleFingerTap release];
}

singleFingerTap コードをコメントアウトすると、機能します。doubleFingerTapで以前に割り当てたことがあるので、allocを使用すべきではないと思いますか?

ここで何が欠けているかについてのアイデアはありますか?

4

2 に答える 2

1

1 本の指でタップすると、ボタンの通常の動作が妨げられます。タッチが妨げられないようにする必要があります。

[singleFingerTap setCancelsTouchesInView:NO];
于 2011-05-23T05:43:03.633 に答える
0

UITapGestureRecognizer が、そうでなければ UIButtons によって処理されるタップをインターセプトしているようです。

使用できますgestureRecognizer:shouldReceiveTouch:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    return (touch.view != self.button1 && 
            touch.view != self.button2);
}

または、レスポンダー チェーンをハッキングすることもできます。

于 2011-05-23T04:43:23.077 に答える