Сбой приложения при нажатии кнопки за клавиатурой - PullRequest
0 голосов
/ 29 января 2020

Приложение, которое я создаю, аварийно завершает работу, когда нажимается кнопка, расположенная за клавиатурой.

У меня следующий вид:

struct LoginSheetView: View {
 // Variables Here
    var body: some View {
        SwiftyHUDView(isShowing: self.$isLoading) {
            VStack{
                Text("Login")
                    .font(.largeTitle)
                    .fontWeight(.semibold)
                    .padding(.bottom, 20)
                TextField("Username", text: self.$username)
                    .padding(.bottom, 20)
                    .autocapitalization(.none)
                    .textContentType(UITextContentType.username)
                SecureField("Password", text: self.$password)
                    .padding(.bottom, 20)
                    .textContentType(UITextContentType.password)
                Button(action: {
                    self.isLoading = true
                    if(!self.username.isEmpty  && !self.password.isEmpty){
                        self.databaseCalls.login(username: self.username, password: self.password){ b in
                            self.isLoading = false
                            print("is loading: \(self.isLoading)")
                            if(b){
                                self.loginStatus = true
                                self.presentationMode.wrappedValue.dismiss()
                            }else{
                                self.showingAlert = true
                            }
                        }

                    }


                }){
                    Text("Login")
                        .frame(width: 220, height: 60)
                        .cornerRadius(15.0)
                }
            }
            .alert(isPresented: self.$showingAlert) {
                Alert(title: Text("Loging failed"), message: Text("Wrong username or password"), dismissButton: .default(Text("Got it!")))
            }
            .padding()

        }

    }
}

, который выглядит следующим образом:

enter image description here

Всякий раз, когда я нажимаю кнопку Логин , когда клавиатура поднята, я получаю следующую ошибку в файле AppDelegate:

Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

Эта ошибка не возникает, если я нажимаю return на клавиатуре, а затем нажимаю кнопку Login.

Есть идеи, что является причиной ошибки?

ПРИМЕЧАНИЕ: Я удалил некоторый код (объявления переменных, отступы, цвета и т. Д. c), чтобы было легче переваривать

1 Ответ

0 голосов
/ 29 января 2020

Я добавил:

UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to:nil, from:nil, for:nil)

внутри действия кнопки, и это устранило проблему. Кто-нибудь знает, это правильный способ решения проблемы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...