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

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

问题描述

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.

推荐答案

选项一:

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天全站免登陆