2012-03-19 14 views
3

私は自分のWebアプリケーションをモバイルデバイスで使用可能なフォームに変換しようとしています。私は水平スクロールのようなタッチジェスチャーのサポートを構築しようとしています。私は私のアプリでいくつかの奇妙な動作を見つけている。iOSタッチスタートとタッチムーブの間の遅延?

タッチスタートイベントでジェスチャーを開始し、次にtouchmoveでスクロールします。しかし、私のアプリケーションでは、これら2つのイベントを受信するまでに500〜700ミリ秒の遅延があります。私の知る限りでは、私のアプリはこの2つのイベントの間に他の仕事をしていません。

他の態様: コード

$(element).bind(touchmove, function(ev) {return myobject.DoTouch(ev) } 

を使用して、jQueryのに書き込まれるDoTouchコマンドは単にev.typeをチェックし、タッチ位置を記録し、falseを返します。

私はこれを解決しようとする必要がありますどのようなアイデア?タッチしてからアプリからの応答を得るまでの遅れは非常に迷惑です。

+0

iOSシミュレータでのみテストしていますか?私はそれが意図的に遅延を追加すると確信しています。 –

+0

いいえ、私はiPadでテストしています。 –

答えて

0

はい。これは、iOSの仕組みです。私はしばらくの間、自分の髪を引っ張っていた。詳細はこちらhttp://developer.apple.com/library/ios/#DOCUMENTATION/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.htmlをご覧ください。本質的に、iOSがこれを内部のPANジェスチャーとして扱うことができると考えると、touchmoveイベントを送信することを邪魔することさえありません。

私のプロジェクトでは、視聴者がタッチモーブのジェスチャーを非常に意図的に行い、移動の終わりに指を離す前にもう少しポーズをとると、実際にはtouchmoveイベントが期待通りに送信される。したがって、文書化された動作は、現実とは少し違うかもしれませんが、混乱とデバッグの努力が増えました。

とにかく、iOSが内部的にPANジェスチャーとしてイベントを処理すると、イベントがtouchendの前に送信されます。私のプロジェクトでは、これを使用してドラッグ・ジェスチャー(通常は私のtouchmoveハンドラで送られた)を区別し、自分自身のハンドリングに関係しないスタンドアロンのハンド・ハンドラの動作を無視していましたスクロール処理。

私はこれがあなた(そして他の人たち)にも役立つことを願っています!