2016-11-08 6 views
1

Я хочу resignFirstResponder() для одного textField, только если все textFields заполнены. Однако по какой-то причине это не сработает. Независимо от того, заполнены ли другие, он проверяет только одного ответчика.resignFirstResponder только если заполнены все текстовые поля

Это то, что я пытаюсь сделать:

//Check wheather fields are filled or not and then enable or disable register button 
    func textChanged(_ sender: NSNotification) { 
     if usernameField.hasText && emailField.hasText && passwordField.hasText && confirmPasswordField.hasText { 
      registerButton.isEnabled = true 
      confirmPasswordField.resignFirstResponder() 
     } 
     else { 
      registerButton.isEnabled = false 
     } 
    } 

И я также пытался:

func textFieldShouldReturn(textField: UITextField!) -> Bool { 
     if usernameField.hasText && emailField.hasText && passwordField.hasText && confirmPasswordField.hasText { 
     confirmPasswordField.resignFirstResponder() 
      return true 
     } 
     return false 
    } 

Что я делаю неправильно?

+0

Код в порядке. Я просто пробовал и работает. Я не уверен, что понял, что вы подразумеваете под «Независимо от того, заполнены ли другие, он проверяет только одного ответчика». Вы хотите сказать, что resignFirstResponder запускается только при фокусировке на confirmPasswordField? –

+0

У меня есть 4 поля, и я хочу, чтобы последнее поле было первым ответчиком, только если все остальные заполнены. –

+0

OK. Что случилось сейчас? Что произойдет, если у вас есть текст в текстовых полях 1,2, 3 и нажмите return перед вводом данных в 4? Что произойдет, если вы нажмете Return после ввода данных в 4? –

ответ

1

Это код, который я использовал

func textFieldShouldReturn(textField: UITextField) -> Bool { 
    if text1.hasText() && text2.hasText() && text3.hasText() && text4.hasText(){ 
     registerButton.enabled = true 
     text4.resignFirstResponder() 
     return true 
    } 
    return false 
} 

Я не знаю, как вы вызываете функцию TextChanged, так что я не могу понять, что вы пытаетесь сделать там.

Если вы хотите, чтобы пользователь не мог перейти к text4 перед заполнением text1, text2, text3, используйте другой блок if для его реализации.

Смежные вопросы