如何在 SwiftUI 项目中正确展示 PKPaymentAuthorizationViewController?

5

我已经访问过这个答案,这里提出的present方法不起作用(再也?)。当我使用一个UIViewControllerRepresentable然后以一个sheet的形式展示它时,它看起来很糟糕:

Screenshot UIViewControllerRepresentable sheet

如果我使用overlay,它看起来完全符合我的要求,但是overlay不能从一个


1
你是否找到了更好的方法,在SwiftUI 2中甚至?仍然没有关于此的文档或示例。 - TruMan1
嗨@TruMan1,我没有,因为生活中发生了太多的事情,所以我有点放弃了这个项目。如果你找到更好的解决方案,请告诉我。 - Lucas van Dongen
1个回答

4

我并不百分之百确定这是最佳的实现方式,但我成功地使用了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 不会再次响应触摸。

我也遇到了完全相同的问题。通过 ZStack 处理是个好方法。肯定有内存泄漏的地方。当我手动将 PK 控制器实例设置为 nil 时,它的表现会更好,但仍然不稳定。在那之后我可以再次打开它,但取消按钮仍然无法工作,事件也非常不稳定。 - TruMan1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接