iOS 8中弹出窗口中UIDatePicker存在问题

10

有没有其他人在iOS 8中使用弹出窗口中的UIDatePicker时遇到问题?突然间,我们的日期选择器显示不正确(请参见截图)。似乎日期选择器的一部分未被显示出来(但是,仍可与缺失部分进行交互以更改时间)。

我进行了一些测试,并且发现日期选择器在其他视图中可以完美显示,因此可能与弹出窗口或在非全屏幕视图中显示选择器有关。

有人找到了解决这些问题的方法或变通方法吗?

UIDatePicker issues in popovers on iOS 8


它不仅适用于弹出窗口,还适用于表格视图。 - Igor Konoplyanko
1个回答

20

我在苹果开发者论坛上找到了解决方案(当我在 Stack Overflow 上遇到问题时,它是我的备用知识库)。

用户 Natsu 给出了以下解决方案:

在我的项目中也遇到了同样的问题。并且仅在 iPad 设备上出现问题(使用相同代码的 iPhone 没有问题)。据我所知,UIDatePicker 包含用于显示选择器内容的 UITableView 和 UITableViewCell,并且其背景颜色默认设置为白色。这就是出现此问题的原因。iOS 7 中 UIDatePicker 具有带有白色背景的 UITableViewCell,iOS 8 中 UIDatePicker 具有带有白色背景的 UITableView。因此,我的解决方案是使用 UIAppearance 将这些背景颜色设置为 nil,就像这样:

[[UITableView appearanceWhenContainedIn:[UIDatePicker class], nil] setBackgroundColor:nil]; // for iOS 8
[[UITableViewCell appearanceWhenContainedIn:[UIDatePicker class], [UITableView class], nil] setBackgroundColor:[UIColor colorWithWhite:0.0 alpha:0.0]]; // for iOS 7

我设置的值是iPhone上使用的颜色。我不确定这是否是解决问题的正确方法,但在我的环境中至少可以很好地工作。我不知道UIPickerView的问题是否由相同的原因引起。但检查视图层次可能会有所帮助。

由于使用了UIAppearance,您几乎可以将其放在任何地方。我将其放在我的表格单元格类的awakeFromNib中,它像魔法一样运行。谢谢Natsu!


太棒了,运行得很顺畅!感谢您在SO上提出这个问题 :) - Igor Konoplyanko
有没有办法在Swift中修复这个问题? - Marcus Gabilheri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接