我正在开发一个原生模块来集成支付。 使用 xcode 并使用符号断点进行调试后,我找到了问题的根源,但我想了解为什么会发生这种情况,以及如何解决问题。
我使用
UIViewController
来呈现此模式,但视图控制器的类型是 RCTModalHostViewController
,因为我正在使用的 UI 库(UI Kitten)正在做一些事情来更改视图控制器的类型。
当我删除 UI Kitten 时,视图控制器类型再次返回 UIViewController
,并且模式不会消失。
如何获取视图控制器的实例? 我使用此标题中的方法
RCTPresentedViewController()
<React/RCTUtils.h>
。
代码的相关部分在这里:
internal class OppwaHandler: NSObject, UINavigationControllerDelegate, OPPThreeDSEventListener, PKPaymentAuthorizationViewControllerDelegate {
// constants
let viewController = RCTPresentedViewController()
// ... some irrelevant code
public func onApplePay(params: ApplePayParams) -> String {
// ... some irrelevant code
if let rootViewController = self.viewController {
if let vc = PKPaymentAuthorizationViewController(paymentRequest: request) as PKPaymentAuthorizationViewController? {
vc.delegate = self
DispatchQueue.main.async {
rootViewController.present(vc, animated: true, completion: nil)
}
return "Ok. reached end of ok logic"
} else {
return "Apple Pay not supported."
}
}else{
return "Not showing view controller"
}
使用 UI KItten 时,
rootViewController
的类型是 RCTModalHostViewController
,但是当我删除 UI Kitten 时,它的类型是 UIViewController
并且模态框不会消失。
版本:
一般信息:
回答我自己的问题。
iOS 不允许呈现多个模式。我已经在不知情的情况下呈现了一个模式(加载视图)。