问题描述
据我所知,在SwiftUI中从TextField解散键盘的唯一内置方法是按return。我想这样做,以便我可以在屏幕上除TextView之外的任何地方点击并关闭键盘。有一种方法可以做到:
var body: some View {
VStack(alignment: .center,spacing: 0) {
Text("some text")
.frame(maxWidth: .infinity)
.contentShape(Rectangle())
.onTapGesture(
// dismiss keyboard here
)
TextField("text",$binding)
Text("more text")
.frame(maxWidth: .infinity)
.contentShape(Rectangle())
.onTapGesture(
// dismiss keyboard here
)
}
}
这有点麻烦。我想这样做:
var body: some View {
VStack(alignment: .center,spacing: 0) {
Text("some text")
TextField("text",$binding)
Text("more text")
}
.frame(maxWidth: .infinity)
.contentShape(Rectangle())
.onTapGesture(
// dismiss keyboard here
)
}
这在大多数情况下都有效,但是最外层视图上的手势将覆盖文本字段的手势。第一次在文本字段上按时,键盘将显示,但是在再次按下时,它会关闭我不需要的键盘。我希望子视图手势优先。如果VStack中有一个按钮,则它应仅注册该按钮,而不注册解除手势。我当时正在研究GestureMask和ExclusiveGesture,但找不到方法。有没有人知道的方法?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)