4

当你滚动一个UIPickerView组件,然后看着它继续滚动,它最终会停在一个元素上并调用didSelectRow. 这是预期的行为。

假设您在选择器视图的元素 1 上。如果您滚动到元素 0(通过向下拖动组件)...并越过它(将 0 元素拖到选择器视图下方的蓝色选择框之外)...当您松开时,选择器视图将向后滚动到元素 0 以使其在蓝色选择框中居中,然后调用didSelectRow.

但是,如果我们采用相同的示例...(即您在选择器视图的元素 1 上,并且滚动远远超出元素 0)...如果选择器视图正在滚动回元素 0 的中间,并且您快速单击元素 0 或其上方的空白区域,然后选择器视图将笨拙地从滚动动画中的任何位置直接“跳转”到元素 0,然后不会调用didSelectRow.

这是一个大问题,因为我们现在在元素 0 上而没有实际调用didSelectRow......因此,我们没有迹象表明我们不再在元素 1 上。此外,如果您滚动到最后一个元素并快速点击在滚动动画完成之前,最终元素或其下方的空白区域。(如果您出于某种原因在中间元素中尝试此操作,它会正常工作)

所以总体上的问题是,我如何才能检测到这种尴尬的“跳跃”,它或多或少是一个小故障UIPickerView


到目前为止的想法:我们可能不得不手动处理点击UIPickerView;不过,这似乎有点矫枉过正,因为它只在pickerview的第一个和最后一个元素上被破坏了......


另一个更新:在 iPhone 上尝试了一些标准的苹果应用程序(比如时钟应用程序)后,我意识到这个问题实际上也发生在这些应用程序中(在时钟应用程序上选择 am,滚动过去 pm,然后单击它之前的“保存”完成滚动回到下午)。你最终还是会被选中。所以这似乎是一个苹果的问题,很可能无法解决。

4

0 回答 0