コンポーネントをスクロールしUIPickerView
、それがスクロールを続けるのを見ると、最終的には要素で停止し、を呼び出しますdidSelectRow
。これは意図された動作です。
ピッカービューの要素1を使用しているとします。要素0までスクロールして(コンポーネントを下にドラッグして)...それを通過すると(0要素をピッカービューの青い選択ボックスを超えてはるかに下にドラッグして)...離すと、ピッカービューがスクロールバックします要素0を青い選択ボックスの中央に戻すために、要素0に移動してから、を呼び出しますdidSelectRow
。
ただし、同じ例をとると...(つまり、ピッカービューの要素1にいて、要素0をはるかに超えてスクロールする)...ピッカービューが要素0にスクロールバックしている途中である場合、要素0またはその上の空白をすばやくクリックすると、ピッカービューは、スクロールアニメーションのどこからでも要素0に直接「ジャンプ」し、呼び出しませんdidSelectRow
。
これは大きな問題didSelectRow
です。実際に呼び出さずに要素0を使用しているため、要素1を使用しなくなったという兆候はありません。さらに、最後の要素を超えてスクロールし、すばやくタップした場合にも発生します。スクロールアニメーションが終了する前の、最後の要素またはその下の空白。(何らかの理由で中間の要素でこれを試してみると、正常に機能します)
したがって、全体的な問題は、多かれ少なかれグリッチであるこの厄介な「ジャンプ」をどのように検出できるかということUIPickerView
です。
UIPickerView
これまでの考え: ;のクリックを手動で処理する必要があるかもしれません。ただし、これはピッカービューの最初と最後の要素でのみ壊れているため、やり過ぎのようです...
別の更新:iPhoneでいくつかの標準的なアップルアプリ(時計アプリなど)を試した後、この問題は実際にはそれらのアプリでも発生することに気付きました(時計アプリで午前を選択し、午後を過ぎてスクロールし、その前に[保存]をクリックします)午後にスクロールバックを終了します)。あなたはまだ選択されていることになります。したがって、これはAppleの問題のようであり、おそらく修正できない可能性があります。