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

为何绑定AppStorage变量时GeometryReader会导致Stepper等控件失效?

iPadOS 16.5后GeometryReader与AppStorage绑定控件的交互故障

当视图外层使用GeometryReader,且内部包含绑定到@AppStorage变量的Stepper、Toggle等控件时,这些控件会出现无法正常响应操作的问题。移除GeometryReader,或者改用@State变量替代@AppStorage后,控件即可恢复正常功能。该问题此前未出现,推测是iPadOS 16.5版本更新后引入的故障。

临时解决方案

  • 若无需持久化存储变量,可将@AppStorage替换为@State变量
  • 调整布局结构,避免GeometryReader直接包裹包含绑定控件的视图层级(例如将GeometryReader的使用移至内部子视图,而非作为最外层容器)

示例代码

import SwiftUI

struct ContentView: View {
    /*
     修复Stepper功能的两种方式:
     1. 注释掉@AppStorage的stepperValue,取消注释@State的stepperValue
     2. 注释掉所有GeometryReader相关代码
         (但这样会破坏“占满整个垂直视口”的需求)
     */
    
    @AppStorage("stepperValue") var stepperValue = 5
    //@State var stepperValue = 5
    
    var body: some View {
        GeometryReader { reader in
            ScrollView {
                ZStack {
                    Rectangle()
                        .fill(.blue.gradient)
                        .frame(minHeight: reader.size.height)
                    VStack {
                        Stepper(value: $stepperValue, in: 1...10) {
                            Text("数值:\t \(stepperValue)").font(.title3)
                        }
                    }.padding()
                }
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

内容的提问来源于stack exchange,提问作者Jace

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 08:22:12