6

私は次のコードを持っています:

[UIView animateWithDuration:2.0 delay:0.0 options:UIViewAnimationOptionAllowUserInteraction
     animations:^{
         imageView.bounds = endBounds;
     }
     completion:^(BOOL finished) {
         [UIView animateWithDuration:2.0 delay:0.5 options:UIViewAnimationOptionAllowUserInteraction
              animations:^{
                  imageView.bounds = startBounds;
              }
              completion:^(BOOL finished) {
                      [imageView removeFromSuperview];
              }];
     }];

さらに私は持っています:

[imageView setUserInteractionEnabled:YES];

そして、imageViewをタップするユーザーを処理するタップジェスチャレコグナイザーセット。最初のアニメーションが発生している間、ジェスチャレコグナイザーは予想どおりに起動します。しかし、完了ブロックから連鎖アニメーション中にimageViewをタップしようとすると、適切なオプションを設定しても何も起こりません。

誰か考えがありますか?グーグルで答えが見つかりません。

4

3 に答える 3

28

新しいアニメーションブロックを使用するときに、アニメーション中にユーザーインタラクションを有効にする場合は、オプションマスクで設定する必要があります。例えば:

[UIView animateWithDuration:1.0 
                      delay:0 
                    options:UIViewAnimationOptionAllowUserInteraction 
                 animations:^{ myView.alpha = 0.5; } 
                 completion:NULL];
于 2011-04-06T20:45:52.787 に答える
5

私は解決策を思いついた:

UIImageViewを画像と同じ境界/中心点を持つUIView(UIViewをサブクラス化)でラップします。次に、画像ではなく、ジェスチャレコグナイザーをラッパーにアタッチします。ラッパーの境界の長方形/中心点は、アニメーションの実行中は変更されないため、ジェスチャのターゲットとして常に使用できます。

これは非常にうまく機能します。

-j

于 2011-03-07T17:23:03.417 に答える
0

次を使用した場合、同じ動作が見られますか?

+ [UIView setAnimationDidStopSelector:]

ブロックを使用する代わりに?

于 2011-03-03T14:05:41.257 に答える