2016-12-29 10 views
0

Я пытаюсь создать текстовое поле, переключающееся с 1 на другое автоматически, аналогично я могу переключить текстовое поле назад, но в нулевом состоянии я не могу переключить курсор в предыдущее textfield, я попытался с РедактированиеChange Event, но когда текстовое поле в нулевом состоянии, функция Editng Change не запускается.Какое событие используется для обнаружения UITextfield в нулевом состоянии

Код:

@IBAction func textFieldEditingChanged(_ sender: UITextField) { 

    if(sender.text?.characters.count == 1) { 
     switch sender { 
     case otpField1: 
      otpField2.becomeFirstResponder() 
     case otpField2: 
      otpField3.becomeFirstResponder() 
     case otpField3: 
      otpField4.becomeFirstResponder() 
     case otpField4: 
      otpField4.resignFirstResponder() 
     default: 
      break 
     } 
    }else { 

    } 

    if ((sender.text?.characters.count)! <= 0 || sender.text! == "" || sender.text?.isEmpty == true) { 

     switch sender { 
     case otpField4: 
      otpField3.becomeFirstResponder() 
     case otpField3: 
      otpField2.becomeFirstResponder() 
     case otpField2: 
      otpField1.becomeFirstResponder() 
     case otpField1: 
      otpField1.resignFirstResponder() 
     default: 
      break 

     } 
    } 

} 
+0

Я думаю, вы должны использовать «IQKeyboardManager» для перехода от одного текстового поля к другому. Его простота использования. – Amanpreet

ответ

0

Чтобы найти UITextField пусто вы можете использовать isEmpty из String.

Так вот это будет:

sender.text.isEmpty 

Как я буду использовать это

guard let email = emailTextField.text, !email.isEmpty else { 
     return 
} 

Hopes это решает проблему.

+0

Но событие EditingChanged не запускается в нулевом состоянии. – Joe

0

Вместо реализации TextField делегата shouldChangeCharactersInRange и проверить там, вероятно, необходимо проверить на ноль и еще некоторые вещи, но это идея:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { 
    let newLength = (textField.text?.characters.count)! - range.length + string.characters.count 

    if (textField.text?.characters.count)! > 0 && newLength == 0 { 

     textField.text = "" 

     switch textField { 
     .... 
     } 
    } 
    return true 
} 
0

Вы можете найти с условием, как

if textField.isEmpty or textField.text == "" { 
    // Do your stuff here when textField is empty 
} 
else { 
    // Do your stuff when textField is not empty 
}