簡體   English   中英

UIDatePicker 在 macCatalyst 中不起作用(Xcode 11 Beta 5)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM