You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 04:43:16