15

iPhone のタッチスクリーン上で指をドラッグするとtouchesMoved、通常の 60Hz でイベントが生成されます。

ただし、最初のtouchesBeganイベントから最初のイベントへの移行touchesMovedはそれほど明白ではありません。デバイスがしばらく待機することがあります。

それは何を待っていますか?より大きな時間/距離デルタ? イベントにまとめるための追加のタッチはありますか?

誰か知っていますか?

重要なことに、この遅延は後続の指では発生しないため、最初のタッチが明らかに不利になります。ゲームや楽器など、正確な入力を必要とするアプリにとって、これは非常に非対称であり、悪いニュースです。

このバグ/現象の動作を確認するには

  1. iPhone の画面ロック解除スライダーをゆっくりと右にドラッグします。突然のジャンプに注意し、別の指を画面の他の場所に置くとジャンプしないことに注意してください

  2. いくつかの 3D ゲームで、狭い橋を「忍び寄って」渡ってみてください。もどかしい!

  3. デュアル仮想ジョイスティック ゲームを試してみてください。不快感を和らげるタッチのいずれかを決して終了しない義務があるため、効果が緩和されることに注意してください。

8 か月前にこれをバグとして記録する必要がありました。

4

5 に答える 5

2

これはバグではなく、機能が不足していると思います。

通常、これは、ユーザーが意図していない場合に、タップまたは長押しをスライドに変換する偶発的な微動を除外することを意図した動作です。

これは新しいことではなく、以前から存在していました。たとえば、ポインタ ベースの GUI ではダブル クリックに対して数ピクセルの許容範囲があります。また、ドラッグを開始する前にこれと同じ許容範囲さえあります。クリック。デスクトップ (OSX または Windows) 上のアイテムをゆっくり動かしてみてください。

欠けている機能は、構成可能に見えないことです。

touchesBeganアイデア:定期的にタッチをチェックするタイムループに入ることは可能locationInView:ですか?

于 2012-01-05T10:10:55.693 に答える
1

私はいかなる種類の公式の回答も表していませんが、touchesBegan->touchesMoved の期間が touchesMoved->touchesMoved よりも長いことは理にかなっています。すべての touchesBegan が一連の偶発的な touchesMoved イベントと共に発生した場合、開発者はイライラするでしょう。Apple は、タッチがドラッグになる距離を (実験的に) 決定したに違いありません。touchesMoved が開始されると、次の touchesUp までのすべてのポイントが touchesMoved であることが保証されるため、このテストを実行する必要はなくなります。

これは、元の投稿、Rythmic Fistman であなたが言っていることのようです。もう少し詳しく説明して、あなたの推論に同意したいと思います。これは、ある種の「ドラッグ速度」を計算している場合、更新タイマーの頻度に依存するのではなく、移動距離を係数として使用する必要があることを意味します (いずれにせよ、これはより良い方法です)。

于 2009-07-20T19:19:09.810 に答える
0

現在、touchesBeganとtouchesMovedの間のこのような「遅延」は、他の指が画面に触れているときにも発生します。残念ながら、それを無効にするオプションはまだ存在しないようです。私は音楽アプリの開発者(およびプレーヤー)でもあり、この動作は非常に煩わしいと感じています。

于 2011-01-24T23:01:01.637 に答える
0

最初の動きを待っています。これが、OS がドラッグとタップを区別する方法です。ドラッグすると、新しい通知はすべて touchesMoved になります。

これは、タッチアップ イベントで実行するコードを記述する必要がある理由でもあります。

于 2009-07-15T20:19:02.210 に答える