2

コンテナー内に多くのカスタム UIView があり、ユーザーがそれらを移動した後にアニメーション化します。彼らの動きを追跡するために、 で現在の位置を取得し、touchesBegan:で位置を更新しtouchesMoved:ます。

ときどき、特に最近ビューを移動した場合 (そして、まだ元の位置に戻っている可能性があります)、別のビューのドラッグを開始すると、touchesBegan:セレクターが呼び出されませんが、呼び出されtouchesMoved:ますtouchesEnded:。ビューで最初に呼び出されることなくtouchesMoved:、どのように呼び出すことができますか?touchesEnded:touchesBegan:

4

2 に答える 2

2

アプリで同様の問題が見つかりました。別のビューの邪魔にならないようにビューをアニメーション化するときに、最初のビューにすばやく触れてスワイプを開始すると、touchesBegan イベントは発生しませんが、最初のビューがなくなると touchesMoved を取得し始めます。

この回答によると、animateWithDuration:delay:options:animations:completion: を呼び出すと、アプリの起動時にユーザー インタラクション イベントが無視され、アニメーション中にユーザー インタラクション イベントが無視されます。UIViewAnimationOptionAllowUserInteractionオプションまたはuserInteractionEnabledプロパティを使用してみてください。必要に応じてイベントを許可する必要があります。

于 2012-09-08T12:50:15.387 に答える
1

おそらくApple docsを再読する価値があります。touchesBeganが呼び出されることが保証されているかどうかはわかりません。

touchesBeganetc イベントをログに記録していると思います。正しいイベントが発生しているのに、ログ メッセージが「順不同」に表示されている可能性がありますか?

于 2012-03-13T02:17:08.500 に答える