iOS 17.1.2 SwiftUI中当前视图意外返回父视图问题求助
iOS 17.1.2 SwiftUI 视图意外回退问题处理
问题现象
在iOS 17.1.2版本的SwiftUI中,执行以下两种操作时,当前视图会意外自动返回至父视图:
- 使用
Link组件打开URL:Link(destination: URL(string: terms_url)!) { Text("Terms") } - 发起内购支付请求时:
let product: SKProduct = ...//Selected subscription here let payment = SKPayment(product: product) SKPaymentQueue.default().add(payment)
该问题仅存在于截至2023年12月9日的最新iOS版本中,且已排除@Environment(\.dismiss)环境变量的影响。
临时解决方案
1. 替代Link的URL跳转方式
放弃使用Link,改用UIApplication.shared.open手动处理跳转,避免触发视图回退:
Button("Terms") { guard let url = URL(string: terms_url) else { return } await UIApplication.shared.open(url) }
2. 内购请求的规避处理
在发起内购请求前,可尝试将操作包裹在DispatchQueue.main.async中,或确保视图状态稳定:
DispatchQueue.main.async { let payment = SKPayment(product: product) SKPaymentQueue.default().add(payment) }
另外,也可以检查当前视图的生命周期状态,确保在视图处于活跃状态时再发起支付请求。
说明
此问题属于iOS 17.1.2版本的系统级Bug,建议后续关注苹果的系统更新,待官方修复后再换回原有实现方式。
内容的提问来源于stack exchange,提问作者Ömer Karaca
相关产品推荐
相关产品推荐

