禁用呈现的视图控制器的交互式关闭 [英] Disable the interactive dismissal of presented view controller

查看:23
本文介绍了禁用呈现的视图控制器的交互式关闭的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

iOS 13 为模态引入了 modalPresentationStyle .pageSheet(及其同级 .formSheet)的新设计呈现的视图控制器...

iOS 13 introduces a new design of modalPresentationStyle .pageSheet (and its sibling .formSheet) for modally presented view controllers…

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

…and we can dismiss these sheets by sliding the presented view controller down (interactive dismissal). Although the new "pull-to-dismiss" feature is pretty useful, it may not always be desirable.

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

THE QUESTION: How can we turn the interactive dismissal off? - Bear in mind we keep the presentation style the same.

推荐答案

选项 1:

viewController.isModalInPresentation = true

(禁用交互式 .pageSheet 解雇行为就像这样.)

(Disabled interactive .pageSheet dismissal acts like this.)

  • 从 iOS 13 开始,UIViewController 包含一个名为 isModalInPresentation 的新属性,必须将其设置为 true 以防止交互式关闭.
  • 它基本上忽略了视图控制器边界之外的事件.如果您不仅使用自动样式,还使用 ​​.popover 等演示样式,请记住这一点.
  • 此属性默认为 false.
  • Since the iOS 13, UIViewController contains a new property called isModalInPresentation which must be set to true to prevent the interactive dismissal.
  • It basically ignores events outside the view controller's bounds. Bear that in mind if you are using not only the automatic style but also presentation styles like .popover etc.
  • This property is false by default.

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

From the official docs: If true, UIKit ignores events outside the view controller's bounds and prevents the interactive dismissal of the view controller while it is onscreen.

<小时>

选项 2:

func presentationControllerShouldDismiss(_ presentationController: UIPresentationController) -> Bool {
    return false
}

  • 从 iOS 13 开始,UIAdaptivePresentationControllerDelegate 包含一个名为 presentationControllerShouldDismiss 的新方法.
  • 仅当呈现的视图控制器未以编程方式关闭且其 isModalInPresentation 属性设置为 false 时,才会调用此方法.
    • Since the iOS 13, UIAdaptivePresentationControllerDelegate contains a new method called presentationControllerShouldDismiss.
    • This method is called only if the presented view controller is not dismissed programmatically and its isModalInPresentation property is set to false.
    • 提示:不要忘记分配presentationController的委托.

      Tip: Don't forget to assign presentationController's delegate.

      这篇关于禁用呈现的视图控制器的交互式关闭的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆