让我们想象一下,像每个信使一样,都有ScrollView和TextField。
我想隐藏键盘(如果它是打开的)当有人在这个键盘上滚动时,我用scrollDismissesKeyboard
来实现这个。
但有一些错误我无法解决:如果我开始滚动ScrollView,然后转到键盘,我的键盘也在滚动!
如何避免这种行为?谁知道呢?
我已经附上了一个GIF视频显示我的意思和一个小代码片段与SwiftUI视图,这是渲染这种行为。
这是一段代码:
import SwiftUI
struct TestKeyboard: View {
@State var text: String = ""
var body: some View {
VStack {
ScrollView {
TextBox(text: "Test 1", color: .red)
TextBox(text: "Test 2", color: .green)
TextBox(text: "Test 3", color: .blue)
TextBox(text: "Test 4", color: .red)
TextBox(text: "Test 5", color: .green)
TextBox(text: "Test 6", color: .blue)
}
.scrollDismissesKeyboard(.interactively)
TextField(text: $text) {
Text("Test Field")
}
}
}
}
struct TestKeyboard_Previews: PreviewProvider {
static var previews: some View {
TestKeyboard()
}
}
先谢谢你!
1条答案
按热度按时间ffx8fchx1#
这就是交互式的意思,当您在键盘上方开始滚动并向下移动时,键盘将随之向下移动,然后将其关闭。如果您不希望键盘像这样关闭,您可以在向下或向上滚动或拖动textField本身时关闭键盘,如下所示
你可以调整拖动手势,也许你想在向上滚动时打开键盘,在向下滚动时隐藏键盘,只需更改focused属性