textFieldDidEndEditing 在 swift 3 中使用 pickerview 时不触发

textFieldDidEndEditing not firing when pickerviiew used in swift3

在 Swift 中使用选取器视图时,文本字段委托方法 textFieldDidEndEditing 未触发 3. 如何调用它?没有动态调用委托的按钮。

你可以在下面看到我的代码。

import UIKit

class ThroewViewController: UIViewController,UIPickerViewDelegate,UIPickerViewDataSource,UITextFieldDelegate {



    @IBOutlet weak var pickerText: UITextField!


    let thePicker = UIPickerView()
    var dashTitle_Arr = ["One","Two","Three","Four","Five","Six"]

    override func viewDidLoad() {
        super.viewDidLoad()

        pickerText.delegate = self
       thePicker.dataSource = self
        thePicker.delegate = self
       pickerText.inputView = thePicker



    }


    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {

        return dashTitle_Arr .count
    }

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {


        return dashTitle_Arr [row]     }

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {


        pickerText.text = dashTitle_Arr [row]

    }

    func textFieldDidEndEditing(_ textField: UITextField) {
        addIntoArray(text: textField.text)
    }

    func addIntoArray(text: String?) {

        guard let text = text, text.characters.count > 0 else {

            return
        }

        dashTitle_Arr.append(text)
        thePicker.reloadAllComponents()
    }
}

有一个属性的picker-viewaccessoriesView。使用 donecancel 按钮创建一个 tool bar 并在选择器视图的 assessoriesView.

中设置它

在工具栏中 button action 写入 textfield.resignFirstResponder() 之后 textFieldDidEndEditing 委托方法被触发

对我来说效果很好。希望它能帮助你。谢谢