TextField SwiftUI Отключить клавиатуру - PullRequest
0 голосов
/ 01 февраля 2020

Как я могу отклонить клавиатуру после того, как пользователь щелкнул вне TextField с помощью SwiftUI?

Я создал TextField с помощью SwiftUI, но я не смог найти никакого решения для отклонения клавиатуры, если пользователь нажимает за пределами TextField. Я рассмотрел все атрибуты TextField, а также документацию SwiftUI TextField , и не смог найти ничего, связанного с отклонением клавиатуры.

Это код моего представления:

struct InputView: View {
    @State var inputValue : String = ""
    var body: some View {

        VStack(spacing: 10) {
            TextField("$", text: $inputValue)
                .keyboardType(.decimalPad)
        }
    }
}

Ответы [ 2 ]

1 голос
/ 01 февраля 2020

вот решение, использующее DragGesture, оно работает.

struct ContentView: View {
    @State var text: String = ""
    var body: some View {
        VStack {
            TextField("My Text", text: $text)
                .keyboardType(.decimalPad)
        }
        .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
        .edgesIgnoringSafeArea(.all)
        .gesture(
            TapGesture()
                .onEnded { _ in
                    UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
            }
        )
    }
}
0 голосов
/ 08 марта 2020

TextField ("Номер телефона", текст: $ no) .keyboardType (.numbersAndPunctuation) .padding () .background (Color ("4")) .clipShape (RoundedRectangle (cornerRadius: 10))

        }.offset(y:-self.value).animation(.spring()).onAppear(){
            NotificationCenter.default.addObserver(forName:UIResponder.keyboardWillShowNotification, object: nil, queue: .main){ (notif)in
                let value  = notif.userInfo![UIResponder.keyboardFrameEndUserInfoKey] as! CGRect
                let height = value.height
                self.value = height


            }
            NotificationCenter.default.addObserver(forName:UIResponder.keyboardWillHideNotification, object: nil, queue: .main){ (notification)in

            self.value = 0


                           }
        }
...