开发的 App 有一个选择时间段的界面。
一开始用 UIDatePicker
发现无法满足 App 的需求。
且如果修改 UIDatePicker
的内部的子视图样式,上架 App 好像会被苹果拒绝。
于是就老老实实的用 UIPickerView
来做。
做出来的界面大概是这样。
![](https://img.haomeiwen.com/i2701794/b722cf6e6face406.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];
});
![](https://img.haomeiwen.com/i2701794/4405797885bd8cb4.gif)
至于为什么,我也不知道。
有知道的小伙伴可以告诉我一下原因。
网友评论