2

最初のコンポーネントがまだスクロールしているときに、UIPickerView の 2 番目のコンポーネントのスクロールを防ぐことは可能ですか? つまり、ユーザーが一度に 1 つのコンポーネントだけをスクロールできるようにします。

もしそうなら、あなたは何をすることをお勧めしますか?

4

2 に答える 2

1

おそらくこれを行う最も簡単な方法は、ピッカーがスクロールしている間、タッチイベントを本質的に破棄できる透明なビューでピッカーをオーバーレイすることです。ピッカーがスクロールしているかどうかを判断するためのアルゴリズムを発明する必要があると思います。たとえば、dataSourceがセクションに関する情報を求められている場合などです。

次のメッセージが表示されたら:didSelectRow:スクロールが停止したことがわかります。

透明なビューでは、基本的にピッカーをオーバーレイし、アクティブなセグメントの上にあるイベントのみを通過させる必要があります。私は特にこれをしていませんが、他の人がそれをしていることについて読んだことがあります。このサイトまたはiOSイベントのAppleドキュメントで、「食べる」または「渡す」イベントの手順を見つけることができるはずです。

また、私であれば、透明なビューに3つの半透明なビューを追加し、それぞれに異なる色を少しずつ色付けして、オーバーレイが適切にセグメント化されているかどうかを判断できるようにします(つまり、各セクションが適切にオーバーしている)ブロックするセグメント)。

于 2012-08-07T17:34:11.197 に答える
0

UIScrollView をサブクラス化し、 touchesShouldBegin および touchesShouldCancelInContentView メソッドをオーバーライドする必要があります。

次に、bool変数が移動している場合はbool変数をfalseに設定し、そのboolがfalseの場合はキャンセルしてtrueを返す最も簡単なオプションをいくつか用意できます。

それはとにかく私がそれをする方法です。

于 2012-08-07T23:42:28.440 に答える