5

iOS 6 には UITableView があり、pull to refresh が有効になっています。上部のセルには、ユーザーが円形のスライダーをドラッグしてインタラクティブに操作できるカスタム コントロールがいくつかあります (このを参照)。スクリーンショットを見る...

ここに画像の説明を入力

コントロールにはタグが必要で、スライダー インジケーターのドラッグはドラッグする必要がありますが、ヒットがセルの背景にあることが多く、テーブルのドラッグが開始されるため、つかむのが難しい場合があります。

それらのコントロールのどこかでタップイベントが発生した場合、テーブルのデフォルトのスクロールを無効にしたいと思います。私が考えることができる2つのオプション:

  1. そのトップセル内のすべてのイベントに対してテーブルのドラッグを無効にする
  2. コントロールがより大きな領域、特に透明な背景を持つ部分でイベントを処理することを確認してください

これらのいずれかを達成する方法に関する提案はありますか?

ありがとう!

4

1 に答える 1

0

UIControlこれらの関数をサブクラス化し、オーバーライドしていました。

override func continueTracking(_ touch: UITouch, with event: UIEvent?) -> Bool { }

override func endTracking(_ touch: UITouch?, with event: UIEvent?) {}

override func beginTracking(_ touch: UITouch, with event: UIEvent?) -> Bool {}

このサークルスライダースタイルの私にとってはうまくいきます。

それでもうまくいかない場合は、上記の方法で tableView スクロール可能のオン/オフを試すことができます。

tableView.isScrollEnabled = false / true
于 2017-12-27T09:48:54.600 に答える