为什么SwiftUI中的.gesture()无法在我的整个模式视图中使用?

问题描述 投票:0回答:1

我有使用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()
  }
}
swift swiftui gesture modal-view
1个回答
0
投票

.frame指定VStack修饰符,如下所示

VStack {
...
}
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .center)
© www.soinside.com 2019 - 2024. All rights reserved.