2011-09-07 8 views
5

アニメーション中にタップジェスチャを認識できるようにする方法はありますか?私はそれにつながっているcashapelayerラインを持っているビューに取り組んでいます。ユーザがパン(パン・ジェスチャ)をパンすると、パンニングが停止するまでその行が続きます。この時点で、アニメーションが実行され、ビューが元の位置に戻り、テザー層も元の位置に戻ります。今私の唯一の本当の問題は、ビューとテザーがアニメーション表示されている間に、ビューがタップジェスチャーに反応しないということです...ビューがアニメート中にタップジェスチャを認識する方法

誰かがいくつかのトリックを知っていますか?私の説明が分かりやすく、事前に感謝したいと思っています!

(テザリングビューの概念が明確でない場合、例を示すdiscovrアプリと呼ばれる無料のアプリがあります)。

+0

UPDATE:明確にするために、ビューの元の境界矩形はタップジェスチャーを認識していますが、他に、移動ビューのタップジェスチャーを認識しません。言い換えれば、現在のフレーム。 – johnnyd

+0

この回答を確認する必要があります:http://stackoverflow.com/a/4432546/129202 – Jonny

+0

上記のリンクの解決策は、生のタッチ操作では機能しますが、ジェスチャーでは機能しない可能性があります。ジェスチャーの回避策を参照してください:http://stackoverflow.com/questions/8340329/how-to-to-make-gesturerecognizer-working-in-an-animating-uiimage-view –

答えて

15

[UIView animateWithDuration: delay: options: animations: completion:];アニメーションの方法を使用しているとします。

アニメーション表示中にアニメーション表示がタッチに反応するようにするには、UIViewAnimationOptionAllowUserInteractionを渡す必要があります。

+1

答えをありがとう、私はすでにやっていますそれ。ジェスチャーは認識されているようですが、直感的な視点ではなく、ビューの元の矩形内でのみ認識されているようです...私は質問を更新してより明確になるようにします。 – johnnyd

2

UIViewAnimationOptionAllowUserInteractionUIViewAnimationOptionAllowAnimatedContentの2つのオプションを設定する必要があります。最初に、アニメーション中にビューと対話し、アニメーションのすべてのフレームでビューを再描画し、開始フレームと終了フレームのスナップショットを使用しないようにします。

+0

あなたの提案を試みましたが、 :(私はこのアプローチを試してみることがあります:これは私を夢中にしているので[ユーザーインタラクション - 無効](http://stackoverflow.com/questions/7221688/caanimation-user-input-disabled):) – johnnyd

+0

Hm。アニメーション表示のスーパービューにジェスチャ認識機能を追加し、 'hitTest:'でアニメーション表示をタップしたかどうか確認してみましょう。 –

+0

これをすべて試す前に試してみたが、試してみるとまだうまくいきませんでした...私はただそれを手に入れません...提案に感謝します! – johnnyd

1

(スウィフト3)パス.allowUserInteractionオプション

UIView.animate(withDuration: 0.75, delay: 0.0, options: [.allowUserInteraction], animations: { 
     // Desired animation(s) 
}, completion: { (finished: Bool) in 
     // Completion 
}) 
関連する問題