美文网首页
记一次 UIPickerView 无法滚动的问题。

记一次 UIPickerView 无法滚动的问题。

作者: 人话博客 | 来源:发表于2018-05-17 16:03 被阅读0次

开发的 App 有一个选择时间段的界面。
一开始用 UIDatePicker 发现无法满足 App 的需求。
且如果修改 UIDatePicker 的内部的子视图样式,上架 App 好像会被苹果拒绝。

于是就老老实实的用 UIPickerView 来做。

做出来的界面大概是这样。

Snip20180517_29.png

一开始非常顺利,两个 UIPickerView 能正确的加载数据,也能显示在界面上。
但就是无法滚动!!!为什么不能滚动?
很奇怪。我之前虽然没专用过 UIPickerView , 但写 demo 玩的时候,也写过几次。
从来就没有遇到不能滚动的情况。


找问题的步骤

两个 UIPickerView'是被包裹在一个 UIView 中的。

一开始以为,是父视图的约束问题,导致了 UIPickerView 其实是超出了父视图的范围,导致无法滚动。
但是通过检查之后,父视图的约束没有问题,两个 UIPickerView 也是在里面的。

难道是父视图的用户交互没有打开?

谁会在创建 UIView 的时候,把 userInteractionEnabled 设置为 NO 呢?

后来又是 谷歌、又是百度、又是 stackoverflow 的。
别人的提问都是在 UITableView 或者是 UIScrollView 中添加了 UIPickerView 导致无法滚动(肯定是手势冲突了)。
没有我的这种情况。

后来实在没办法,就在 dispatch_after 里重新 reload 了一下数据。
于是就是可以滚动了。

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [_timeBeginPickerView reloadAllComponents];
        [_timeEndPickerView reloadAllComponents];
    });
pickerView reloadAllComponents 之后就可以滚动了.gif

至于为什么,我也不知道。
有知道的小伙伴可以告诉我一下原因。

相关文章

网友评论

      本文标题:记一次 UIPickerView 无法滚动的问题。

      本文链接:https://www.haomeiwen.com/subject/ylnbdftx.html