2010-12-16 3 views
0

私は、UIViewControllerとタッチイベントをインターセプトするカスタムウィンドウを持っています。そのため、画面上でさまざまなUIViewをドラッグ&フリックできます。私が扱う3つのイベントタイプがあります:UITouchPhaseBeganとUITouchPhaseMoving(私は単純にタッチ座標に従ってサブUIViewを移動します)とUITouchPhaseEnded(ここでUIViewに力を加えて画面全体を移動させ、スローダウンします摩擦)。flicky/jerkyモーションでもUIScrollViewはどのようにスクロールしますか?

タッチイベントを終了するときに適用される力を計算する方法は、最後(UITouchPhaseMovingから)と現在(UITouchPhaseEndedから)タッチ位置の間の方向ベクトルを計算することですが、それは私に与えられていないようです私が望む結果。

私はビューを移動し、画面から滑らかにそれを移動するとうまく動きますが、私は "ジャーク"私は端に向かって動きを妨げるとき、それは期待どおりに移動しません。これは、数フレームにわたって画面全体を移動しても、最後の動きの動きがあまりにも近すぎるため、完全な力が計算されないためです。

申し訳ありませんが、私はUIScrollViewなどのビューがこの動きがぎっしりした動きでも正しくスクロールできることに気付きました。これは最後のフレームと現在のフレームではなく、複数のフレームにわたって最終的な力が計算されるためですか?もしそうなら、誰でもスクロールビューの内側の動作を知っていますか?それで、フリッキー/ジャッキーな動きでもうまく動作しますか?

答えて

1

内側の動作はわかっていませんが、 がわかりませんが、タッチダウンの座標と時間、リリースの座標と時刻を使用して力ベクトルを計算すると思われます。いったんこれがあれば、慣性に対してそれに減速を加える。私はこれが正しいことを得るのが非常に難しいものかもしれないと思うし、リンゴはこれを微調整するのに長い時間を費やしました。間違いなく興味深い実験。

関連する問題