2

我有这个使用 SwiftUI 的非常简单的 LostPasswordView。此表单以模态视图的形式呈现。我使用 .onTapGesture 和 DragGesture() 来关闭键盘。

问题是只有 TextField 周围的一小部分视图会响应这些手势。这不会改善用户体验,因为它会混淆这些操作的工作位置。

为什么我不能在所有 SwiftUI 模态视图上使用手势?我在想这可能是因为已经有一个向下滑动的手势来关闭模态视图......

import SwiftUI

//MARK: Lost password view presented as a modal
struct LostPasswordView: View {

  @State var email = ""

  var body: some View {
    //MARK: User entry
    VStack {
      ///email
      UserEntryTextField(title: TextFieldName.email.rawValue,
                         userEntry: email
      )
        .padding(.top, 198)

      Spacer()

      //MARK: Modify password button
      MainButton(action: {},
                 title: .modifyPassword)
    }
    .padding(.bottom)
    .onTapGesture {
      self.dismissKeyboard()
    }.simultaneousGesture(
      DragGesture().onChanged({ (_) in
        self.dismissKeyboard()
      }))
  }
}

//MARK: Dismiss keyboard
extension LostPasswordView {
  func dismissKeyboard() {
    UIApplication.shared.dismissKeyboard()
  }
}
4

1 回答 1

0

为您指定.frame修饰符VStack如下(可能您需要一些背景,因为透明容器不跟踪事件)

VStack {
...
}
.background(Color.white)
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .center)
于 2019-12-05T17:55:27.520 回答