小编典典

禁用呈现的视图控制器的交互式解除

all

iOS 13 为模态呈现的视图控制器引入了一种新设计modalPresentationStyle
.pageSheet(及其兄弟)——.formSheet

iOS 13
中新的滑动模式演示

- 我们可以通过向下滑动呈现的视图控制器来关闭这些工作表 (交互式关闭) 。尽管新的“pull-to-
dismiss”功能非常有用,但它可能并不总是可取的。

问题: 我们如何关闭交互式解雇? - 请记住,我们保持演示风格相同。


阅读 91

收藏
2022-07-01

共1个答案

小编典典

选项1:

viewController.isModalInPresentation = true

禁用交互式解雇

(禁用交互式.pageSheet解雇行为是这样的。)

  • 从 iOS 13 开始,UIViewController包含一个名为的新属性isModalInPresentation,必须将其设置为true以防止交互式解雇。
  • 它基本上忽略了视图控制器范围之外的事件。.popover如果您不仅使用自动样式,还使用演示样式等,请记住这一点。
  • 这个属性是false默认的。

来自
官方文档
:如果true,UIKit
会忽略视图控制器边界之外的事件,并防止视图控制器在屏幕上的交互解除。


选项 2:

func presentationControllerShouldDismiss(_ presentationController: UIPresentationController) -> Bool {
    return false
}
  • 从 iOS 13 开始,UIAdaptivePresentationControllerDelegate包含一个名为presentationControllerShouldDismiss.
  • 仅当呈现的视图控制器未以编程方式关闭且其isModalInPresentation属性设置为时,才会调用此方法false

提示: 不要忘记分配presentationController 的委托。

2022-07-01