2011-09-24 1 views
23

UIScrollView(またはテーブルビュー)内にある場合、タッチダウンされると、UIButtonの強調表示された状態がわずかに遅れていることに気付きました。そうでなければ、強調表示された状態はかなり瞬間的です。UIScrollView内のUIButtonの強調表示された状態の遅延を削除することはできますか?

これは、ユーザーがスクロールする機会を提供するために、これは設計によるものでなければならないと推測します。しかし、ボタンが私に無反応であるように思える。これを修正する方法はありますか?

答えて

52

実際、デザインの選択肢です。スクロール(パンジェスチャー)をタップから区別するのに、この小さな時間が必要です。この遅延を解消すると、ユーザーがボタンの上に指を置くとスクロールできなくなりますが、これはユーザーの利便性に欠けます。

スクロールバーにはスクロールバーがないため、コンテンツ内のサブビューをトラッキングする意図とは対照的に、スクロールする意図がタッチに表示されるかどうかを知る必要があります。この判定を行うために、タイマーを起動することによってタッチダウンイベントを一時的に傍受し、タイマーが起動する前に、接触している指が動いたかどうかを見る。タイマーの位置が大幅に変更されずに起動すると、スクロールビューはコンテンツビューのタッチされたサブビューに追跡イベントを送信します。私は遅延を無効にすることをお勧めしませんが、あなたが主張するならば、あなたは(スクロールビューを選択し、右側のパネルで、右のバウンス」のインターフェースビルダーでそれを設定することができますUIScrollView Documentation

から

ズーム ")、またはこのコードを使用してください:

scrollView.delaysContentTouches = false 
+0

ありがとう!完璧な答え。考えておく。遅れを取り除いてスクロールを有効にする方法があることを望みます。 – pixelfreak

+2

@pixelfreak両方を行うカスタムスクロールビューを作成することは不可能ではありませんが、iOSユーザーはこの動作に慣れており、基本的なiOSユーザーインタラクションの概念を混乱させない方が良いでしょう。 –

+0

これはスクロールビューの特定のサブビューに対してのみ可能ですか? –

関連する問題