When you scroll the UIPickerView component and then watch how to continue scrolling, it will eventually stop at the element and call didSelectRow . This is the intended behavior.
Say you are on item 1 in select mode. If you scroll to element 0 (by dragging a component down) ... and go past it (dragging element 0 far down in the selector view behind the blue selection box) ... when you release, the selection view will scroll back to element 0 to center it back to the blue selection box, and then call didSelectRow .
However, if we take the same example ... (i.e. you are on element 1 in the selection view and scroll far beyond element 0) ... if the selection view is in the middle of scrolling back to element 0, and you quickly click element 0 or white space above it, then the selection view uncomfortably “jumps” from any place where it is in the scroll animation, directly to element 0, and then will not call didSelectRow .
This is a big problem, since now we are on element 0, without actually calling didSelectRow ... so we have no indication that we are no longer on element 1. In addition, this also happens if you go beyond Limit the end item and quickly touch the end item or the space below it before the scroll animation ends. (It works fine if you try this in the middle elements for some reason)
So, the question as a whole: how can I detect this awkward “jump” that more or less crashes in UIPickerView ?
The thought so far: We may have to manually handle clicks on the UIPickerView ; although this seems redundant as it is only broken down into the first and last pickerview elements ...
Another update: After trying several standard Apple apps (like Clock app) on iPhone, I realized that this problem actually occurs in these apps too (select am on clock clock, scroll back, then click save, before than she will finish scrolling back before noon). As a result, you will still be selected. Thus, it seems that this is a problem of the apple, and perhaps it cannot be fixed.