当样式为 .compact 时选择后关闭 UIDatePicker

Close UIDatePicker after selection when style is .compact

故事板应用程序使用 Swift。

如何在用户选择日期后关闭日历(当UIDatePicker 样式为.compact 时显示用于日期选择)?目前,用户需要在日历外部点击才能关闭。我希望它在用户选择日期后自动关闭。

我试过退出 UIDatePicker 的第一响应者,在收到日期更改的通知后结束在 table 视图控制器中的编辑,读取另一个响应 () 等等什么都不适合我。

现在,您可以:

presentedViewController?.dismiss(animated: true, completion: nil)

override func viewDidLoad() {
    super.viewDidLoad()
    datePicker.addTarget(self, action: #selector(dateChanged), for: .valueChanged)
}

@objc private func dateChanged() {
    presentedViewController?.dismiss(animated: true, completion: nil)
}

但请注意,这可能会在未来的 iOS 版本 中中断,因为这取决于 compact 日期选择器 的实现细节提供一个视图控制器 来显示日历。如果您打印出显示的类型 VC,您将看到 _UIDatePickerIOSCompactViewController。前导 _ 表明这是一个实现细节。

关于 compact 的全部记录是:

A style indicating that the date picker displays as a label that when tapped displays a calendar-style editor.

因此在 iOS 的未来版本中,他们可以改为更改实现以不提供新的视图控制器,这很可能会中断,然后您将不得不找到另一种方法。我现在看不到任何记录在案的方法。