私のアプリはマップのようなインターフェースで構成されており、自動ルートを表示する以外は何もしないでください。UIViewのアニメーションがタッチイベントに干渉する
私は塗装された(写真を介して)ルートを持っており、ルートに沿って自動的に移動する "currentPosition"マーカーがアプリケーションにあり、移動の進行状況を示します。
アニメーションはうまくいきますが、ユーザーが画面に触れると(誤ってなど)、アニメーションが完全に間違ったスピードで配置され、狂ったようにちらつくことがあります。
まず、2のコードサンプル:
[UIView animateWithDuration:POINT_MOVEMENT_DURATION
delay:POINT_MOVEMENT_DELAY
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
self.currentPosition.center = mp.point;
}
completion:^(BOOL finished){
NSLog(@"finished animation: %i", finished);
[self nextPoint:nil];
}
];
nextPointは、次のポイントに移動する機能です。 mp
は画面上のピクセル座標を保持する変数です。
このコードを実行するときに今、animatinがログに見えるよう、スムーズに行く:
2011-01-02 15:32:11.006 MAP Player[2258:307] finished animation: 1
2011-01-02 15:32:14.008 MAP Player[2258:307] finished animation: 1
2011-01-02 15:32:17.011 MAP Player[2258:307] finished animation: 1
とすぐに私は画面をタッチすると、これは0
に切り替わります。
2011-01-02 15:32:26.642 MAP Player[2258:307] finished animation: 0
2011-01-02 15:32:26.647 MAP Player[2258:307] finished animation: 0
2011-01-02 15:32:26.653 MAP Player[2258:307] finished animation: 0
そして、この時点で、項目が速く移動/点滅します、間違った方向など
私は一つのことが見つかりました:そう、私は[self.view setUserInteractionEnabled:NO];
を設定するとちらつきが再び起こることができない、のViewControllerでをそれは間違いなくユーザーのやりとりに関係しています。また、SingleTouch/MultiTouchから独立しています。
どのようにしてこれらのアニメーションをタッチ非依存で作成できますか?私はsetUserInteractionEnabled
呼び出しをアニメーションレスポンダに追加することを考えていました。しかしこれは正しいとは思わない?
画面に触れてアニメーションが実行されているとき、実際にアニメーションが再び開始されていることを示していますか? –
いいえ、アニメーションは開始されますが、最初のアニメーションがまだ終了していないうちに、2番目のアニメーションを開始しているようです。しかし、多分私は間違っています。 –
私はそれをもう一度チェックしました - それは問題ではありませんでした。私は問題を発見したと思って、より多くのチェックと質問に答えます。それは干渉に関するものです。 –