[英]App stuck on iOS 13 beta simulator with Xcode 11 beta but working fine on iOS 13 beta simulator with Xcode 10
[英]UIDatePicker Not working In macCatalyst (Xcode 11 Beta 5)
我們正在使用 xcode 11 beta 5 中的催化劑 swift 將我們的 iOS 應用程序轉換為 macCatalyst 兼容。
我們遇到了默認 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
}
在我看來,問題的原因是 UIDatePicker 已重新設計為緊湊型控制器,而不是 iOS 典型的輪子(可能自 Mac Catalyst 13.4+ 起)。 因此,顏色方案不能再應用於具有 setValue 函數的不存在的輪子並導致錯誤。
所以我試圖讓滾輪模式回到我的 UIDatePicker。 因此,我在 UIDatePicker 中添加了以下行,這為我解決了這個問題:
if #available(macCatalyst 13.4, *) {
myDatePicker.preferredDatePickerStyle = .wheels
myDatePicker.datePickerMode = .date
} else {
// Fallback on earlier versions
}
對於早期版本,我以前沒有這個問題,所以我希望解決方案沒問題,但是如果您在早期版本中也遇到問題,請發表評論,以便我可以調整我的代碼! :-)
注意:我注意到在更改 preferredDatePickerStyle 后 datePickerMode 設置為默認模式,因此請確保之后強制使用 datePickerMode!
我發現如果我使用 self.datePicker.setValue(UIColor.Theme.whiteColor, forKeyPath: "textColor") 設置日期選擇器文本顏色,那么這會導致應用程序在加載視圖時崩潰。 嘗試刪除該行代碼,它應該可以與 mac 催化劑一起使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.