Swift, как уволить первого ответчика на все uiTextfield

Я хотел бы использовать отставку первого ответчика на всем uitextfield. им удалось завершить это, поместив поля uitext в массив, но я хотел избежать использования массива. отставка должна произойти со всеми типами uiTextField, как это можно сделать.

Эта работа отлично

class ViewController: UIViewController,UITextFieldDelegate {
    @IBOutlet weak var text: UITextField!
    @IBOutlet weak var textFieldtwo: UITextField!


    var textField = [UITextField]()

    override func viewDidLoad() {
        super.viewDidLoad()

          self.textField = [text,textFieldtwo]

        for item in textField{
            item.delegate = self



        }


    }

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        print("text")

        for item in textField {
            item.resignFirstResponder()
        }

    }
}

Ответы

Ответ 1

Вы можете попробовать следующее:

for textField in self.view.subviews where textField is UITextField {
    textField.resignFirstResponder()
}

Но если вы просто хотите отклонить клавиатуру, нажав return на keyboard или нажав в любом месте экрана, не используя touchesBegan

Вы можете попробовать:

// For pressing return on the keyboard to dismiss keyboard
func textFieldShouldReturn(textField: UITextField) -> Bool {
    for textField in self.view.subviews where textField is UITextField {
        textField.resignFirstResponder()
    }
    return true
}

...

func hideKeyboard() {
    view.endEditing(true)
}

И добавьте это в свой viewDidLoad:

let tapGesture = UITapGestureRecognizer(target: self, action: #selector(hideKeyboard))
view.addGestureRecognizer(tapGesture)

Ответ 2

Или просто используйте более глобальный подход. (Swift 3.0)

UIApplication.shared.sendAction(#selector(UIApplication.resignFirstResponder), to: nil, from: nil, for: nil);

Это отклонит любое активное поле, поскольку оно уходит в отставку с текущего первого ответчика. Коды удачи!

Ответ 3

Более простой подход мог бы закончить редактирование в UIView, содержащем UITextFields, сказав:

view.endEditing(true)

Ответ 4

Теперь в Swift 3 самые простые методы:

Метод 1:  когда нажата клавиша "возврат".

func textFieldShouldReturn(_ textField: UITextField) -> Bool 
 {
 textField1.resignFirstResponder()
 textField2.resignFirstResponder()
        return true;
    }

Метод 2:, вызываемый при нажатии клавиши "return".

func textFieldShouldReturn(_ textField: UITextField) -> Bool 
    {
    self.view.endEditing(true)
        return true;
    }

Способ 3: Глобальный метод Write in view загрузил

self.view.addGestureRecognizer(UITapGestureRecognizer(target: self.view, action: #selector(UIView.endEditing(_:))))

Примечание. Не забудьте добавить это. Другие мудрые его не работают.

UIGestureRecognizerDelegate, UITextFieldDelegate

Я надеюсь, что это сработает для вас:)

Ответ 5

resignFirstResponder с кнопками панелей инструментов Swift4 ##

Вы можете попробовать следующее:  1. Проверьте делегат текстового поля
class CoursesViewController: UIViewController,UITextFieldDelegate {

  1. создать TextField var: var currentTextField:UITextField!

  2. создайте кнопки "done" и "cancel" toolBar в вашем TextField

    func addDoneCancel(_ textField : UITextField){
    
    curentTextField = textField
    
    // ToolBar
    let toolBar = UIToolbar()
    toolBar.barStyle = .default
    toolBar.isTranslucent = true
    toolBar.tintColor = UIColor(red: 92/255, green: 216/255, blue: 255/255, alpha: 1)
    toolBar.sizeToFit()
    
    // Adding Button ToolBar
    let doneButton = UIBarButtonItem(title: "Done", style: .plain, target: self, action: #selector(CoursesViewController.doneClick))
    let spaceButton = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
    let cancelButton = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(CoursesViewController.cancelClick))
    toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false)
    toolBar.isUserInteractionEnabled = true
    textField.inputAccessoryView = toolBar
    }
    

4. действия кнопок панели инструментов

 @objc func doneClick(){
        curentTextField.resignFirstResponder()
    }


@objc func cancelClick(){
    curentTextField.resignFirstResponder()
}

делегат 5.UItextField

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
        curentTextField = textField
        addDoneCancel(textField)
        return true
    }


    func textFieldDidBeginEditing(_ textField: UITextField) {    //delegate method
    }

    func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {  //delegate method
        return true
    }

    func textFieldShouldReturn(_ textField: UITextField) -> Bool {   //delegate method
        textField.resignFirstResponder()

        return true
    }