ResignFirstResponder из UITextField не работает и не работает self.view.endEditing()
Я сталкиваюсь с нелепой проблемой для textField, у меня есть два текстовых поля, а именно tfA и tfB, я установил делегатов и все для этих текстовых полей, что я хотел, если я нажимаю на tfA, то он должен что-то напечатать, и это печать и если я нажимаю tfB, должна появиться клавиатура, ну, она тоже хорошо работает, но когда я снова нажимаю на tfA, она должна что-то напечатать, и клавиатура должна отклониться в соответствии с заданным условием, но клавиатура там тоже не отклоняется self.view.endEditing(true)
здесь не работает Код приведен ниже со снимком экрана, что я здесь не так делаю?
КОД: Swift 3
import UIKit
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var tfA: UITextField!
@IBOutlet weak var tfB: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
tfA.delegate = self
tfB.delegate = self
}
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField == tfA{
print("TFA Clicked")
textField.resignFirstResponder()
self.view.endEditing(true)
}else{
tfB.becomeFirstResponder()
}
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
Скриншоты
2 ответа
Попробуй это
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
if textField == tfA
{
self.view.endEditing(true)
tfaAction()
return false
}
else
{
return true
}
}
func tfaAction(){
}
Удалить свой textFieldDidBeginEditing
метод, заменить его textFieldShouldBeginEditing
:
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
if textField == tfA{
print("TFA Clicked")
self.view.endEditing(true)
return false
}else{
return true
}
}
Swift 4 Только проверьте пожалуйста это delegate
если он существует, то его следует return true
`func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {`
//MARK:- Textfield Delegates //This is mandatory
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
self.view.endEditing(true)
return true
}
//MARK:- This Delegate is option but if this is exist in your code then return type shoud be true
func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
return true
}
Бегать textfield.resignFirstResponder()
так что все будет как
textfield.resignFirstResponder()
self.view.endEditing(true)