首页 > 解决方案 > 当样式为 .compact 时,选择后关闭 UIDatePicker

问题描述

使用 Swift 的故事板应用程序。

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

我已经尝试辞去 UIDatePicker 的第一响应者,一旦收到日期更改的通知,就结束在表格视图控制器中的编辑,阅读另一个响应(此处),到目前为止,没有什么对我有用。

标签: swiftxcodeuidatepickerxcode-storyboard

解决方案


现在,您可以执行以下操作:

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

IE

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是:

一种指示日期选择器显示为标签的样式,点击该标签时会显示日历样式的编辑器。

所以在未来的 iOS 版本中,他们可以改为将实现更改为不提供新的视图控制器,这很可能会破坏,你必须找到另一种方法。我现在没有看到任何记录在案的方法。


推荐阅读