SwiftUI ScrollView无法随键盘抬起问题求助(兼容iOS14)
SwiftUI键盘弹出时ScrollView内容不向上偏移的问题
问题描述
我需要实现键盘弹出时ScrollView内容随之向上偏移的效果,但目前正常状态下无法实现。奇怪的是,把ScrollView翻转180度后这个功能就正常了!但我不能这么做——因为我要给内容加.contextMenu(...),翻转会触发iOS15下的严重bug。另外,应用必须兼容iOS14。
演示代码
import SwiftUI struct ContentView: View { @State var text: String = "" var body: some View { VStack { ScrollView() { LazyVStack { ForEach(1..<201, id: \.self) { num in Text("Message \(num)") } // .upsideDown() // 启用此修饰符可使ScrollView内容随键盘抬起 } } // .upsideDown() // 启用此修饰符可使ScrollView内容随键盘抬起 TextField("Your text here", text: $text) .textFieldStyle(.roundedBorder) .padding() } .navigationBarTitleDisplayMode(.inline) .navigationTitle("Example app") } } extension View { func upsideDown() -> some View { self.rotationEffect(.degrees(180)) } }
行为演示
- 翻转后的正常效果:

- 正常ScrollView的异常效果:

已尝试方案
- 试过通过监听焦点状态来处理键盘偏移的方案,但无效
- 尝试在键盘弹出时给ScrollView设置等于键盘高度的偏移,也没有效果
疑问
- 为什么翻转ScrollView后功能正常,正常状态下却不行?
- 为什么两种情况下TextField都会被抬起,但正常状态下ScrollView内容却不会?
内容的提问来源于stack exchange,提问作者MglSaRu
相关产品推荐
相关产品推荐

