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)
Другие вопросы по тегам