开发者社区 问答 正文

防止iOS 13及以上版本中交互式取消支付视图控制器(PlugNPlaySDK)

我用以下方式向客户收取付款.

PlugNPlay.presentPaymentViewController(withTxnParams: txnParam, on: parentVC) { (response, error, extraParam) in //code goes here } PlugNPlay是.的子类NSObject

因此,当我呈现支付视图控制器时,用户可以通过拖曳视图控制器来取消视图控制器。

默认情况下,每个呈现的视图控制器>IOS 13版本都启用它。

那么,如何才能禁用视图控制器的综合解雇呢?

是的,我知道我可以modalPresentationStyle属性在视图控制器上,但在PayUMoney SDK中,我没有找到任何UIViewController子类。

展开
收起
游客5akardh5cojhg 2019-12-03 17:13:12 551 分享 版权
阿里云 AI 助理回答

在iOS中,如果您想要禁用拖拽dismiss(即综合解雇)功能,您通常需要设置视图控制器的modalPresentationStyle.fullScreen.overFullScreen。然而,由于您提到的是在使用第三方SDK(PayUMoney SDK)且没有直接访问到UIViewController子类的情况,您可能需要通过其他方式来实现这一需求。

一种可能的方法是尝试在呈现支付视图控制器之前,通过代理方法或者自定义一个类别来修改其presentation style。但请注意,这取决于PayUMoney SDK是否提供了足够的灵活性来允许这样的定制。如果SDK没有直接提供接口,以下是一种较为间接的尝试方法,但请知悉这可能不适用于所有情况,尤其是当SDK内部强制某些行为时:

  1. Subclassing or Category: 如果可能的话,您可以尝试创建PayUMoney视图控制器的一个子类或类别(Category),并在其中覆写modalPresentationStyle属性。但请注意,这要求SDK允许您以这种方式扩展或替换其视图控制器。
// Subclassing approach (假设PayUMoney的ViewController类名为PayUViewController)
class CustomPayUViewController: PayUViewController {
    override var modalPresentationStyle: UIModalPresentationStyle {
        get {
            return .fullScreen
        }
        set {
            // 可能不需要设置,因为我们总是希望它是.fullScreen
        }
    }
}

// 然后尝试使用您的CustomPayUViewController去呈现
  1. 使用UIPresentationController Delegate: 如果您无法直接修改视图控制器,可以考虑利用UIPresentationController的代理方法来控制交互式dismiss的行为。尽管这不能直接阻止拖拽dismiss,但可以通过代理方法监听并阻止dismiss动作的发生。不过,这需要PayUMoney SDK在展示视图控制器时允许您设置自定义的UIPresentationController或代理。

  2. 与SDK提供商联系: 最直接有效的方式可能是联系PayUMoney的客服或技术支持,询问是否有官方推荐的方式来禁用拖拽dismiss功能。他们可能提供特定的API或配置选项来满足您的需求。

由于直接操作第三方SDK的内部逻辑存在局限性,上述建议可能需要根据实际SDK的可定制程度进行调整。如果SDK本身没有提供相应的接口,那么最佳实践通常是寻求官方支持或查看SDK文档中是否有相关的配置说明。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答