如何在SwiftUI中消除像WhatsApp中那样的滑动键盘
我知道有人会拒绝使用键盘,但大多数情况下,它们都是在键盘外点击时触发的。如何在SwiftUI中消除像WhatsApp中那样的滑动键盘,swiftui,Swiftui,我知道有人会拒绝使用键盘,但大多数情况下,它们都是在键盘外点击时触发的。 如我在问题中所述,如何实现轻扫键盘(到底部)。例如,如果您有一个消息列表,那么您可以: List { ForEach(...) { ... } }.resignKeyboardOnDragGesture() 顺便说一下,它是从这里来的:UIScrollView具有keyboardDismissMode,当设置为interactive时,将实现您想要的功能。SwiftUI不提供对此的直接支持,但由于在引擎
如我在问题中所述,如何实现轻扫键盘(到底部)。例如,如果您有一个消息列表,那么您可以:
List {
ForEach(...) { ...
}
}.resignKeyboardOnDragGesture()
顺便说一下,它是从这里来的:UIScrollView具有
keyboardDismissMode
,当设置为interactive
时,将实现您想要的功能。SwiftUI不提供对此的直接支持,但由于在引擎盖下,SwiftUI使用的是UIScrollView,因此您可以使用它将应用程序中的所有滚动视图的keyboardDismissMode设置为交互式
UIScrollView.appearance().keyboardDismissMode=.interactive
您的视图层次结构中必须有一个ScrollView才能运行。下面是一个简单的视图,演示了该行为:
struct ContentView: View {
@State private var text = "Hello, world!"
var body: some View {
ScrollView {
TextField("Hello", text: $text)
.padding()
}
.onAppear {
UIScrollView.appearance().keyboardDismissMode = .interactive
}
}
}
唯一需要注意的是,这会影响应用程序中的所有滚动视图。如果你只想影响应用程序中的一个滚动视图,我不知道一个简单的解决方案。这个答案似乎可以解决问题。谢谢,我不能投票,因为我的声誉还不够,但你可以投票支持我的问题:)
struct ContentView: View {
@State private var text = "Hello, world!"
var body: some View {
ScrollView {
TextField("Hello", text: $text)
.padding()
}
.onAppear {
UIScrollView.appearance().keyboardDismissMode = .interactive
}
}
}