如何在 presentViewController 之后禁用 SFSafariViewController 中的滑动手势

Posted

技术标签:

【中文标题】如何在 presentViewController 之后禁用 SFSafariViewController 中的滑动手势【英文标题】:How to disable swipe gesture in SFSafariViewController after presentViewController 【发布时间】:2020-11-16 08:04:57 【问题描述】:

我编写了以下代码来禁用 SFSafariViewController 中的滑动弹出手势。但它不起作用。

self.navigationController.interactivePopGestureRecognizer.enabled = NO;
self.navigationController.interactivePopGestureRecognizer.delegate = (id<UIGestureRecognizerDelegate>)self;

我还添加了委托方法

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 

    return YES;

但它永远不会被调用。请帮我禁用弹出手势。

【问题讨论】:

【参考方案1】:

请覆盖presentationControllerShouldDismiss并在该方法中返回false。

- (BOOL)presentationControllerShouldDismiss:(UIPresentationController *)presentationController
   return NO;

或者您可以尝试为 SFSafariViewController 对象将 modalInPresentation 参数设置为 YES 吗?因为根据documentation 它说...

此属性的默认值为 NO。当您将其设置为 YES 时, UIKit 会忽略视图控制器范围之外的事件并阻止 视图控制器在屏幕上时的交互解除。

【讨论】:

我继承了 SFSafariViewController 并写了 - (BOOL)presentationControllerShouldDismiss:(UIPresentationController *)presentationController return NO; 但是这个委托方法没有被调用。 好的,然后尝试设置 modalInPresentation=NO;在继承的类中。

以上是关于如何在 presentViewController 之后禁用 SFSafariViewController 中的滑动手势的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS SDK 中使用 presentViewController 在视图控制器之间传递变量?

如何在 UIView 类中调用 presentViewController?

如何更改presentViewController过渡动画

如何通过 presentViewController 将对象传递到视图中?

如何使用 presentViewController 呈现 iOS 键盘扩展

如何在不使用 presentViewController 的情况下以模态方式呈现自定义视图?