在iOS 13 Beta 1中,出现模态视图控制器时有新行为。现在默认情况下它不是全屏显示,当我尝试向下滑动时,该应用程序会自动关闭View Controller。
如何防止这种行为并回到旧的好全屏模式vc?
谢谢
我正在更新应用程序以使用通用故事板.我已经使用界面构建器创建了一个popover segue到一个新的viewcontroller,方法是从一个按钮拖动到我的新viewcontroller并选择'Present As Popover'作为segue的类型.
当用户按下弹出窗口(解除它)时,我需要在呈现视图控制器中得到通知,以便我可以撤消他们的操作.我怎样才能做到这一点?
通常我会手动创建popover并使我的viewcontroller成为popover的委托; 允许我使用popoverControllerDidDismissPopover委托回调.但是,这在iOS9中已被弃用,即使不是我也不知道在哪里找到popover所以我可以将其委托设置为我的视图控制器.
在我看来,这些情况都是平行的:
我的视图控制器呈现了另一个全屏视图控制器,现在已将其关闭
我的视图控制器显示了另一个不是全屏的视图控制器,现在已将其关闭
我的视图控制器显示了一个弹出窗口,现在已将其关闭
我的视图控制器推送了另一个视图控制器,该视图控制器现在已弹出
在每种情况下,我的视图控制器都不再是“最前端”的视图控制器,然后再次变为“最前端”。我很好奇iOS没有向我的视图控制器发送涵盖所有这些情况的单一毯子“成为最前面”事件。
我想我可以互相覆盖的那些情况下独立了,我觉得这些都是我需要覆盖的情况下,但由此产生的代码混乱和分散:
viewDidAppear 检测推送视图控制器的弹出和全屏显示视图控制器的关闭
popover委托消息检测对popover的解雇
不确定是什么原因导致非全屏显示视图控制器被解雇
人们如何连贯而优雅地处理这一问题?
当使用 XCode 11 beta 构建项目时,我在 iOS 13 beta 6 上看到了一个奇怪的行为。在全屏呈现视图控制器(在 Storyboard 中指定的动画样式“Show”)并关闭后,不会调用呈现视图控制器上的 viewWillAppear。行为有变化吗?
编辑:重复问题中提到的覆盖presentationControllerDidDismiss(_:) 的解决方法对我没有帮助。在关闭通过 Segue 呈现的视图控制器时,它甚至不会被调用。
我刚刚发现该popoverPresentationControllerDidDismissPopover方法已被弃用。什么是替代方法?
我试图检测通过滑动的 imagePickerController 何时通过向下滑动手势或通过取消关闭。
imagePicker 通过此方法加载(https://developer.apple.com/documentation/uikit/uiviewcontroller/1621380-presentviewcontroller)
[rootViewController presentViewController:picker animated:animated completion:NULL];
Run Code Online (Sandbox Code Playgroud)
我们可以通过实现此方法简单地检测 pickerController 是否通过取消关闭(https://developer.apple.com/documentation/uikit/uiimagepickercontrollerdelegate/1619133-imagepickercontrollerdidcancel)
但是,我还想检测它是否通过向下滑动关闭(对于 iPhone X,...,我们可以向下滑动以关闭以模式方式显示的视图)
使用 Swift,我可以用以下代码检测它:
extension UIImagePickerController {
open override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
// detecting
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道在 Objective C 中是否有等效的方法(因为我正在从事的项目是用 Objective C 编写的)?或欢迎任何其他建议:D