2

ビューにタップ ジェスチャを追加しました。最初は機能しているように見えましたが、ビューをアニメーション化した後、ビューが元の位置に戻るまで、ジェスチャは完全に無視されます。

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];
[self.cellView addGestureRecognizer:tap];
[tap release];

ここでは、右側のビューをアニメーション化します

[UIView animateWithDuration:0.3 
                      delay:0.0 
                    options:UIViewAnimationOptionAllowUserInteraction 
                 animations:^
 {
     [cellView setFrame:CGRectMake(cellViewX, cellView.frame.origin.y, cellView.frame.size.width, cellView.frame.size.height)];
     [editView setFrame:CGRectMake(editViewX, editView.frame.origin.y, cellView.frame.size.width, cellView.frame.size.height)];
 }
                 completion:^(BOOL finished)
{
    NSLog(@"Animation complete");
}];

完了ハンドラーがトリガーされますが、タップ ジェスチャは完全に無視されます。

4

1 に答える 1

1

わかった、ばかげたコピー/貼り付けエラーを起こしたことが判明しました。アニメーションのフレームを設定するときに誤って間違った値を使用しました

[cellView setFrame:CGRectMake(cellViewX, cellView.frame.origin.y, cellView.frame.size.width, cellView.frame.size.height)];
[editView setFrame:CGRectMake(editViewX, cellView.frame.origin.y, cellView.frame.size.width, cellView.frame.size.height)];

しなければならなかった

[cellView setFrame:CGRectMake(cellViewX, cellView.frame.origin.y, cellView.frame.size.width, cellView.frame.size.height)];
[editView setFrame:CGRectMake(editViewX, editView.frame.origin.y, editView.frame.size.width, editView.frame.size.height)];

そうです、真夜中頃にコードをコピー/貼り付けするときは、必ず朝に再確認してください! :)

于 2012-05-22T09:25:22.433 に答える