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

标签 swift uidatepicker catalyst xcode11 uikitformac

我们正在使用 xcode 11 beta 5 中的催化剂 swift 将我们的 iOS 应用程序转换为 macCatalyst 兼容。

我们遇到了默认 DatePicker 未显示在窗口中的问题。

我正在为 mac 尝试这个解决方案,它会在 View 中添加日期选择器,但我想要另一个合适的解决方案。还有什么建议吗?

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 被重新设计为 紧凑型 Controller 而不是 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!

关于swift - UIDatePicker 在 macCatalyst 中不起作用(Xcode 11 Beta 5),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57425200/

相关文章:

ios - 是否可以让 UIDatePicker 使用开始时间和结束时间?

ios - iOS UIDatePicker设置最大日期

datepicker - SwiftUI:DatePicker 是否可以在当前的其他时区显示日期/时间?

perl - 在 Perl 中,在属性中保留对 Catalyst 的 $c 的引用会导致内存泄漏吗?

ios - Swift 4 JSON 解码器

objective-c - 如何快速获得 1 位小数 float

ios - 如何将用户与涉及 Apple 状态通知的自动续订订阅相关联?

perl - Catalyst ("Can' 中的 Moose 访问器使用字符串作为 HASH ref“错误)

stripe-payments - Stripe : Do I need to refund for uncaptured charges?

ios - 碰撞检测中断另一个碰撞检测 - Swift