SwiftUI:移除视图层级后按钮仍可点击问题求助
iOS 16下使用
.zIndex时视图移除后仍可点击的幽灵按钮问题 我在iOS 16中尝试根据状态显示/隐藏视图,发现视图从层级移除后仍会短暂保持可点击状态,出现幽灵按钮点击的问题。
- 该问题仅在使用
.zIndex修饰符时触发,而我需要这个修饰符来实现平滑过渡效果 - 无论是否搭配
transition修饰符,这个bug都会出现
复现步骤:点击“show”按钮,然后快速多次点击“hide”按钮。预期hide按钮的处理程序仅触发一次(因为视图已被移除),但实际会多次触发。
struct ContentView: View { @State var show = false var body: some View { ZStack { Button { print("show") show = true } label: { Text("show") .foregroundColor(.white) .padding() .background(Color.blue.cornerRadius(8)) } if show { Button { // 快速点击时会多次触发 print("hide") show = false } label: { Text("hide") .foregroundColor(.white) .padding(64) .background(Color.red.cornerRadius(8)) } .zIndex(1) // 移除该修饰符则问题消失,但会失去视图过渡能力 } } } }
有没有人遇到过这个bug?除了移除.zIndex之外,有没有能保留过渡效果的修复方案?我已经提交了反馈FB11753719。
内容的提问来源于stack exchange,提问作者bze12
相关产品推荐
相关产品推荐

