UIScrollViewにUIButtonが追加されたサブビューがあります。
ユーザーがスクロールしていない限り、ボタンは完全に機能しています。ユーザーがボタンをクリックしたときにUIScrollViewがまだスクロールしている場合は、代わりにスクロールを停止します(行がクリックされた場合など)。
誰もがこれを修正する方法を知っていますか?
UIScrollViewにUIButtonが追加されたサブビューがあります。
ユーザーがスクロールしていない限り、ボタンは完全に機能しています。ユーザーがボタンをクリックしたときにUIScrollViewがまだスクロールしている場合は、代わりにスクロールを停止します(行がクリックされた場合など)。
誰もがこれを修正する方法を知っていますか?
まず、これが実際に必要な動作であることを確認してください。iOS ユーザーは、ビューをスクロールし、タップしてボタンを押すことなくビューを停止することに慣れています。非標準的な動作 (標準的な動作よりも優れていると考えている場合でも) は、他の iOS アプリでの動作に慣れているユーザーを混乱させる可能性があります。これは、メンタル モデルに違反する可能性があります。さて、以上の注意事項。
では、これをどのように修正しますか?UIScrollView
それらのタッチがスクロールイベントであるかどうかがわかるまで、タッチイベントの送信を遅らせます。問題は、ユーザーのタップが移動中のスクロール イベントでUIScrollView
あることです。考えられる解決策は次の 2 つです。
が取得したタッチUIScrollView
イベントを遅延させないようにします。スクロール ビューdelaysContentTouches
を に設定NO
すると、遅延アクションが停止し、スクロール中にボタンをタップできるようになります。UIScrollView
クラスのドキュメントでそれについて読むことができます。あなたもcanCancelContentTouches
そこを読んでみたいと思うでしょう。
をサブクラス化しUIScrollView
て、タッチ イベントの移動先に関する独自のロジックを追加します。これを行う方法について説明しているブログ投稿を次に示します。