介绍了用于模态呈现的视图控制器…的modalPresentationStyle.pageSheet(及其sibling .formSheet)的新设计

The new sliding modal presentation in iOS 13

…我们可以通过将呈现的视图控制器向下滑动(interactive dismissal)来解散这些工作表.尽管新的"拉到解除"功能非常有用,但它可能并不总是理想的.

THE QUESTION:我们怎样才能关闭交互式解雇?

推荐答案

选项1:

viewController.isModalInPresentation = true

Disabled interactive dismissal

(Disabled interactive 100 dismissal acts like this.)

  • 由于iOS 13,UIViewController包含一个名为isModalInPresentation的新属性,必须将其设置为true以防止交互式解雇.
  • 它基本上忽略视图控制器边界之外的事件.如果您不仅使用自动样式,而且还使用.popover等演示样式,请记住这一点.
  • 默认情况下,此属性为false.

From the 100:如果为true,则UIKit忽略视图控制器边界之外的事件,并防止在视图控制器显示在屏幕上时以交互方式取消该视图控制器.


选项2:

func presentationControllerShouldDismiss(_ presentationController: UIPresentationController) -> Bool {
    return false
}
  • 因为IOS 13,UIAdaptivePresentationControllerDelegate包含一种称为presentationControllerShouldDismiss的新方法.
  • 仅当呈现的视图控制器未以编程方式解除并且其isModalInPresentation属性设置为false时,才调用此方法.

Tip:不要忘记分配Presentation Controller的代理.

Ios相关问答推荐

如何在react 本机模块中使用Bundle.main.Path()在SWIFT中导入assets资源

将数据传回VC时委托为空

在相机动作之前快速防止场景视点重置

无法下载并安装带有Xcode 15.0的iOS 17.0模拟器运行时

如何在@AppStorage中存储字体?

如何使用自定义数据源在本地react 本机 ios 应用程序中加载 Tradingview 小部件?

尽管存在浮点错误,如何显示正确的计算结果.计算器应用程序

不可发送类型 '[String : Any]?'在调用非隔离实例方法 XXX 时退出主参与者隔离上下文不能跨越参与者边界

Swift Combine:prepend() before share() 阻止初始接收器执行

一对多关系 Firebase 实时数据库(嵌入数百万条 comments )

SwiftUI 我自己的渲染函数的返回类型是什么?

搜索在 ios xamarin.forms 中不起作用

Xcode - 错误 ITMS-90635 - Bundle 包中的 Mach-O 无效 - 提交到 App Store

如何更新推送通知服务证书

'+entityForName: nil 不是合法的 NSManagedObjectContext 参数 - 核心数据

从 WKWebView 获取所有 cookie

~= Swift 中的运算符

如何找出用于构建 *.ipa 文件的配置文件?

无法加载从带有标识符的包中的笔尖引用的图像

如何从 UIPickerView 获取选定的值