我对Swift还不熟悉,当textField位于自定义tableview单元格上时,我一直在努力隐藏键盘。我认为问题源于TableViewCell类中的textField引用,但我不能确定。我什么都试过了,有点迷路了。
我的代码包括:
表格视图单元格:

import UIKit

class TableViewCell: UITableViewCell, UITextFieldDelegate
{
    @IBOutlet weak var userText: UITextField!
    @IBAction func answers(_ sender: UITextField)
    {
    }

    override func setSelected(_ selected: Bool, animated: Bool)
    {
        super.setSelected(selected, animated: animated)
    }

    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        textField.delegate = self
        textField.resignFirstResponder()
        return true
    }
}

和TableViewController:
import UIKit

class TableViewController: UITableViewController, UITextFieldDelegate
{
    var textfield = TableViewCell()

    override func viewDidLoad()
    {
        super.viewDidLoad()
        let myText = textfield.userText
        textField.resignFirstResponder()
        myText?.delegate = self
    }

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

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
    {
        return 3
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
    {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)

        return cell
    }
}

我试着在两个类中运行textFieldShouldReturn函数,但无法使其工作。

最佳答案

UITextFieldDelegate中删除UITableViewCell并委派func
然后在内部设置委托

`override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)as! TableViewCell

    cell.userText.delegate = self
    return cell
}

然后您想在UITableViewController中添加textFieldShouldReturn并返回true试试这个

10-05 20:05