Там это объяснение названия вопросаUITextField возврата ключа следующая ошибка
Вот часть кода InputViewController:
class InputViewController: UIViewController, UITextFieldDelegate {
private var firstResponderTag = 0
...
func textFieldDidBeginEditing(textField: UITextField) {
firstResponderTag = textField.tag
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
if let nextResponder = textField.superview?.viewWithTag(textField.tag + 1) {
nextResponder.becomeFirstResponder()
} else {
textField.resignFirstResponder()
}
return true
}
...
}
И SigningInViewController:
class SigningInViewController: InputViewController {
...
@IBOutlet
private weak var emailTextField: TextField! {
didSet {
emailTextField.validator = EmailValidator()
}
}
@IBOutlet
private weak var passwordTextField: TextField! {
didSet {
passwordTextField.validator = PasswordValidator()
}
}
override func viewDidLoad() {
super.viewDidLoad()
Observable.combineLatest(emailTextField.rx_text, passwordTextField.rx_text, resultSelector: {
(email: String, password: String) in
email.length > 0 && password.length > 0
}).bindTo(signInButton.rx_enabled).addDisposableTo(bag)
}
...
}
Проблема заключается в том, что, если нажать клавишу возврата Next
, следующее текстовое поле становится первым ответчиком и немедленно отправляется в отставку. Но если я удаляю ключ возврата, он работает так, как должен. Итак, что я делаю неправильно?
UPD:
Я пропустил подобный вопрос в официальном репо RxSwift в. Решение
if let nextResponder = textField.superview?.viewWithTag(textField.tag + 1) {
dispatch_async(dispath_get_main_queue(), {
nextResponder.becomeFirstResponder()
})
} else {
ли вы найти решение? – mohamede1945
@ mohamede1945, да, я нашел его. Вы можете видеть это в разделе UPD) –