我们正在使用Xcode 11 beta 5中的Swift将我们的iOS应用程序转换为Mac Catalyst兼容。
我们面临的问题是默认的DatePicker不显示在窗口中。
我正在尝试这个解决方案的mac和它将添加日期选择器在视图中,但我想要另一个适当的解决方案。还有其他建议吗
func datepickerWillLoad() {
self.datePicker.datePickerMode = .date
self.datePicker.maximumDate = Date()
self.datePicker.backgroundColor = UIColor.Theme.lightBackground
self.datePicker.setValue(UIColor.Theme.whiteColor, forKeyPath: "textColor")
self.datePicker.addTarget(self, action: #selector(didChangedDatePickerValue), for: .valueChanged)
//if user open picker and without change click on done
self.dateOfBirthTextField.addTarget(self, action: #selector(didChangedDatePickerValue), for: .editingDidEnd)
#if targetEnvironment(macCatalyst)
datePicker.frame = CGRect(x: 0, y: self.view.frame.height - 200 , width: self.view.frame.width, height: 200)
self.view.addSubview(datePicker)
#else
self.dateOfBirthTextField.inputView = datePicker
#endif
}
2条答案
按热度按时间b5lpy0ml1#
在我看来,问题的原因是UIDatePicker被重新设计为一个紧凑的控制器,而不是iOS典型的轮子(可能是从Mac Catalyst 13.4+开始)。因此,无法再使用setValue函数将颜色方案应用于不存在的控制盘,并导致错误。
所以我试着把轮子模式放回我的UIDatePicker。因此,我在我的UIDatePicker中添加了以下行,这为我解决了这个问题:
对于早期版本,我以前没有这个问题,所以我希望解决方案很好,但是如果你在早期版本中也遇到这个问题,请发表评论,这样我就可以调整我的代码了!:—)
注意:我注意到修改preferredDatePickerStyle后datePickerMode设置为默认模式,请务必在修改后强制datePickerMode!
toe950272#
我发现如果我用self.datePicker.setValue(UIColor.Theme.whiteColor,forKeyPath:“textColor”),则这会导致应用程序在加载视图时崩溃。尝试删除这行代码,它应该与mac催化剂工作。