UIDatePicker 显示不正确

UIDatePicker not displaying correctly

基本上,当我将我的应用程序更新为 运行 时,这个问题就开始了 iOS 9。在不对代码进行任何更改的情况下,现在选择器视图上会出现一个白色方块,但它可以正常工作。

请注意,用户可以隐藏和显示选择器视图及其所在的单元格。如果您需要更多信息,请发表评论。

更新:这是 Table 视图的完整屏幕截图:

更新 2:以下显示了我在变量调试器中预览(按栏 space 按钮)时的 _pickerView 属性。这让我觉得 strange 视图在 UIDatePickerView 内部,这是一个错误。

更新 3:广泛研究

所以我最终使用视图检查器和调试器进行了更多研究并得出了一些结论,尽管我仍然不知道如何解决它。 使用视图层次结构调试器,我发现 白色奇怪视图 它是 UIDatePicker.

中的 UIPickerTableView

在这里我们可以看到 subject 被选中为蓝色,它的名字在屏幕的顶部。我还写了从选择器视图到 subject 的整个层次结构,因此您可以看到它。

下一步是使用调试器检查我的 datePicker 变量,看看我是否可以找到导致问题的 UIPickerTableView。在其中我可以找到 3 个视图,每个对应于每个组件 (日、月、年)。让我快速浏览一下其中的每一个:

点击图片放大

在第一个和第三个(日期和年份)中,我们可以看到带有数字的实际标签旁边看起来像是一些放错位置的视图。正如您在屏幕截图中看到的,这些属性是 UIPickerColumnViews。我没有更进一步,但你可以想象,如果我们检查 属性,我们会发现 subject 作为 UIPickerTableView.

毕竟,我得出的结论是,这些观点的错位是 可能 导致问题的原因。这就是今天的全部内容。

最终更新

因此,在提交错误报告几天后,Apple 回复并将其标记为 重复。所以我想我们只能等待他们修复它。您可以在 rdar://22566989

查看雷达

这是对我有用的技巧:如果将 UITableView 分隔符样式更改为 None,问题就会消失。看起来像是 Apple 端的错误,就像我们在 iOS 9.9

中发现的许多问题一样

我遇到了同样的问题,我发现这是因为我的 UIDatePicker 与我的视图控制器的视图是分开的。我在代码中将此视图添加为子视图。为了解决这个问题,我在 viewDidLoad 方法中添加了 UIDatePicker,这对我有帮助

Apple Developer Relations 将我的错误报告标记为重复,所以我猜这是他们必须解决的 SDK 错误。截至本 post(10 月 12 日)它仍然开放。

解决方法

viewDidLoad() 方法中更改日期选择器的 属性,例如模式。您不必更改它,您可以将其设置为任何内容,然后再将其更改回您实际想要的内容。