SwiftUI-有没有一种方法可以向视图添加手势而不覆盖子视图的任何手势?

问题描述

据我所知,在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 (将#修改为@)