使用Swift编写故事板应用程序。
当UIDatePicker样式为.compact时,用户在选择日期后,如何关闭日历(用于日期选择的弹出框)?目前,用户必须点击日历外部才能关闭。我希望在用户选择日期后它可以自动关闭。
我尝试了UIDatePicker的resigning first responder方法,在表视图控制器中接收到日期更改通知后结束编辑,阅读了另一个回答(这里),但目前没有任何作用。
使用Swift编写故事板应用程序。
当UIDatePicker样式为.compact时,用户在选择日期后,如何关闭日历(用于日期选择的弹出框)?目前,用户必须点击日历外部才能关闭。我希望在用户选择日期后它可以自动关闭。
我尝试了UIDatePicker的resigning first responder方法,在表视图控制器中接收到日期更改通知后结束编辑,阅读了另一个回答(这里),但目前没有任何作用。
目前,你可以做:
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
的文档都是:
一种样式,表示日期选择器显示为标签,当被点击时会显示一个类似于日历的编辑器。
因此,在未来的iOS版本中,他们可以改变实现方式,不再呈现新的视图控制器,这很可能会导致问题,那时你将不得不寻找另一种方法。我现在没有发现任何官方文档提供解决方案。