2011-09-14 17 views
0

私はタッチスクリーン電話のために何かを書いています。ユーザーが画面をタップすると、指定した機能を実行するプログラムが欲しいです。ユーザーが指を画面の上または下にドラッグすると、画面をスクロールしたいと思います。タッチスクリーン:タップからのスクロールの開始を区別する

OSには、(1)画面がタッチされると検出され、(2)指が画面上でドラッグされたときに検出され、(3)指が画面から離れるときを検出する3つの関連するコールバック関数があります。いずれの場合も、コールバック関数は関連するイベントが発生したスクリーン座標を取得します。

ドラッグは、明らかに指が画面に触れてから始まり、指が画面から離れると終了します。タッピングは、通常、タッチ、非常に短いドラッグアンドエンドタッチとして検出されます。指定された関数をタップで呼び出すだけでは、真のタップではなく画面のドラッグイベントでトリガーします。

私が考えているのは、ユーザーが最初に触れるときの時間や場所をマークすることです。ドラッグコールバック関数を短時間または後で実行する場合は、スクロールとして扱います。それ以外の場合は、画面からのコールバックがあった場合は、タップとして扱います。問題には、時間を知らせるコスト、トリガーとして使用する時間や距離の決定、より良い一般的なアプローチがあるかどうかなどが含まれます。

私のアプリは、Symbianデバイス用のPythonで書かれています。それは非常に一般的なプラットフォームではないので、実装するための最良の方法についてのご意見をいただければ幸いです。

答えて

0

私は考えることができる最善のアプローチは、次のとおりです。

タッチコールバック:設定action_location = drag_location = CURRENT_LOCATION(OSによって報告さCURRENT_LOCATION)

アンタッチコールバック:もしdistance_threshold内action_location(例えば、20または25ピクセル)、実行アクション

drag_locationがcurrent_locationからのdistance_thresholdより大きい場合、scroll_location = current_locationをスクロールして設定します。

関連する問題