如何在仅SwiftUI项目中正确显示PKPaymentAuthorizationViewController?
我已经访问过这个答案,但已经不起作用了。当我使用如何在仅SwiftUI项目中正确显示PKPaymentAuthorizationViewController?,swiftui,uikit,applepay,passkit,Swiftui,Uikit,Applepay,Passkit,我已经访问过这个答案,但已经不起作用了。当我使用UIViewControllerRepresentable并将其显示为工作表时,它看起来非常糟糕: 如果我使用overlay它看起来与我想要的完全一样,但是overlay不能从按钮触发 以下是(浓缩)代码: public struct ContentView:View{ @观察对象var模型:RootViewModel @国家私有变量tappedDonate=false 公共机构:一些看法{ 按钮(操作:{ tappedDonate=真 },标签
UIViewControllerRepresentable
并将其显示为工作表时,它看起来非常糟糕:
如果我使用overlay
它看起来与我想要的完全一样,但是overlay
不能从按钮触发
以下是(浓缩)代码:
public struct ContentView:View{
@观察对象var模型:RootViewModel
@国家私有变量tappedDonate=false
公共机构:一些看法{
按钮(操作:{
tappedDonate=真
},标签:{
文本(“捐赠”)
.框架(宽:300,高:44,对齐:。中心)
})
.框架(宽:300,高:20,对齐:。中心)
.padding()
.背景(颜色.黑色)
.foregroundColor(.白色)
.转弯半径(22)
.表(显示:$TAPPEDONATE){
ApplePayRapper(请求:model.buildApplePayment())
.背景(颜色.清晰)
}
}
public init(模型:RootViewModel){
self.model=model
}
}
我不是100%相信这是最好的方法,但我设法让它在视觉上工作,就像我打算使用ZStack来工作一样
:
ZStack {
Button(action: {
tappedDonate = true
}, label: {
Text("Donate")
.frame(width: 300, height: 44, alignment: .center)
})
.frame(width: 300, height: 20, alignment: .center)
.padding()
.background(Color.black)
.foregroundColor(.white)
.cornerRadius(22)
if tappedDonate {
ApplePayWrapper(request: model.buildApplePayment())
}
}
请注意,您仍然需要通过代理点击外部来连接取消按钮和常规解除按钮,否则带有按钮的底层UI不会再次响应触摸。即使在SwiftUI 2中,您是否找到了更好的方法?这方面还没有文档或样本。嗨@TruMan1不,我没有,我已经放弃了这个项目,因为现在生活中有太多的事情同时发生。如果您找到更好的解决方案,请告诉我。我也遇到了确切的问题。通过ZStack处理它很好。某个地方肯定有内存泄漏。当我手动nil
退出PK控制器实例时,它工作得更好,但仍然不稳定。我可以在那之后一次又一次地打开它,但“取消”按钮仍然不起作用,而且事件非常不稳定。