【问题标题】:textFieldDidEndEditing not firing when pickerviiew used in swift3在swift 3中使用pickerview时textFieldDidEndEditing不触发
【发布时间】:2018-05-18 17:09:28
【问题描述】:

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

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

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()
    }
}

【问题讨论】:

  • 在didSelectRow委托方法中,可以强制结束对textField的编辑,只需在该方法中添加一行:pickerText.resignFirstResponder。
  • 实际上我需要将字符串附加到需要保存在该数组中但它不起作用的数组对象
  • 您必须将该行放在 pickerText.text = dashTitle_Arr [row] this line 之后。还是行不通 ?告诉我

标签: ios swift3 delegates uitextfield uipickerview


【解决方案1】:

picker-view 的属性是accessoriesView。使用donecancel 按钮创建tool bar,并将其设置在选择器视图的assessoriesView 中。

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

它对我来说很好用。希望它会帮助你。谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多