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

Dwi*_*igt 12 xcode uidatepicker xcode-storyboard swift

使用 Swift 的 Storyboard 应用程序。

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

我尝试过辞职 UIDatePicker 的第一响应者,一旦收到日期更改的通知就结束在表视图控制器中的编辑,读取另一个响应(此处),到目前为止没有任何效果对我有用。

Swe*_*per 14

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

presentedViewController?.dismiss(animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

IE

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

@objc private func dateChanged() {
    presentedViewController?.dismiss(animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)

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

所有记录的内容compact是:

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

因此,在 iOS 的未来版本中,他们可能会更改实现以不呈现新的视图控制器,这很可能会被破坏,然后您必须找到另一种方法。我现在没有看到任何有记录的方法可以做到这一点。

  • 我们需要这种解决方法,这很荒谬。UIDatePicker API 很尴尬。 (6认同)
  • 这正是我所需要的并解决了我的问题。我的具体实现是一个UITableViewController,表中的每一行都有一个日期选择器,所以我在cellForRowAt中添加了每个日期选择器的目标。效果很好。希望它不会很快破裂! (3认同)