使用自定义tableViewCell在tableView上按Enter键或单击时隐藏键盘

时间:2017-05-30 00:07:57

标签: ios swift uitableview uitextfield

我是Swift的新手,当textField在自定义tableview单元格上时,我一直在努力隐藏键盘。我认为问题源于TableViewCell类中的textField Reference,但我无法确定。我已经尝试了一切,但有点失落。

我的代码包括:

TableViewCell:

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函数,但我无法让它工作。

3 个答案:

答案 0 :(得分:0)

textFieldShouldReturn功能插入textField.resignFirstResponder

或在viewDidLoad插入tableView.keyboardDismissMode = .onDrag.interactive,以便在您滚动时根据需要解除

答案 1 :(得分:0)

在tableView单元类中添加此函数,因为您已在tableviewCell的类中声明了委托。

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
      textField. resignFirstResponder() 
        return false
    }

答案 2 :(得分:0)

((Dog) animalDog).bark(); // "Woof" 移除UITextFieldDelegate并委托func 然后在UITableViewCell - >里面

设置委托
UITableViewController

然后你想在`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 } 中添加textFieldShouldReturn并返回true试试这个