无法在横向视图中关闭 EKEventViewController
Cannot Dismiss EKEventViewController in Landscape View
当我使用下面的代码 EKEventViewController
在我的应用程序中打开日历事件时,它会在模式视图中正确显示我的事件。
let eventModalVC = EKEventViewController()
eventModalVC.event = myEvent
eventModalVC.allowsEditing = true
present(eventModalVC, animated: true, completion: nil)
在纵向模式下(使用 iOS 15)我可以使用向下滑动手势关闭模态。但是,当我更改为横向时,手势不起作用,并且也没有后退或取消按钮(就像 EKEventEditViewController
一样)。我找不到任何 属性 的视图控制器可以让我关闭它。
所以用户要么卡住了,要么必须将设备切换到纵向模式。我该如何解决这个问题?
我希望 EKEventViewController 提供一种类似的方便和直观的方式来在横向视图中将其关闭,就像在纵向视图中一样,但没有任何运气。
为了获得后退按钮,我现在将模态视图包含在它自己的导航控制器中。这会显示一个“完成”按钮(以及一个删除按钮)。这两个按钮都不会关闭视图。这可以通过在父视图控制器中实现 EKEventViewDelegate
来完成。
let eventModalVC = EKEventViewController()
eventModalVC.event = myEvent
eventModalVC.allowsEditing = true
let nc = UINavigationController(rootViewController: eventModalVC)
eventModalVC.delegate = self
present(nc, animated: true, completion: nil)
...
// EKEventViewDelegate
func eventViewController(_ controller: EKEventViewController, didCompleteWith action: EKEventViewAction) {
if action == .done {
controller.dismiss(animated: true)
}
// handle deletion as well if needed
}
当我使用下面的代码 EKEventViewController
在我的应用程序中打开日历事件时,它会在模式视图中正确显示我的事件。
let eventModalVC = EKEventViewController()
eventModalVC.event = myEvent
eventModalVC.allowsEditing = true
present(eventModalVC, animated: true, completion: nil)
在纵向模式下(使用 iOS 15)我可以使用向下滑动手势关闭模态。但是,当我更改为横向时,手势不起作用,并且也没有后退或取消按钮(就像 EKEventEditViewController
一样)。我找不到任何 属性 的视图控制器可以让我关闭它。
所以用户要么卡住了,要么必须将设备切换到纵向模式。我该如何解决这个问题?
我希望 EKEventViewController 提供一种类似的方便和直观的方式来在横向视图中将其关闭,就像在纵向视图中一样,但没有任何运气。
为了获得后退按钮,我现在将模态视图包含在它自己的导航控制器中。这会显示一个“完成”按钮(以及一个删除按钮)。这两个按钮都不会关闭视图。这可以通过在父视图控制器中实现 EKEventViewDelegate
来完成。
let eventModalVC = EKEventViewController()
eventModalVC.event = myEvent
eventModalVC.allowsEditing = true
let nc = UINavigationController(rootViewController: eventModalVC)
eventModalVC.delegate = self
present(nc, animated: true, completion: nil)
...
// EKEventViewDelegate
func eventViewController(_ controller: EKEventViewController, didCompleteWith action: EKEventViewAction) {
if action == .done {
controller.dismiss(animated: true)
}
// handle deletion as well if needed
}