如何能够从UITableViewCell做view.endEditing?

时间:2019-01-13 13:48:54

标签: ios swift uitableview

我有一个UITableViewCell 其中有对UITextField的引用:

@IBOutlet weak var inputTextSelectAnswer: UITextField!

我正在尝试在键盘上方添加“完成”按钮,而在您点击该按钮时,键盘将关闭>

func setDoneOnKeyboard() {
        let keyboardToolbar = UIToolbar()
        keyboardToolbar.sizeToFit()
        let flexBarButton = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
        let doneBarButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(dismissKeyboard))
        keyboardToolbar.items = [flexBarButton, doneBarButton]

        self.inputTextSelectAnswer.inputAccessoryView = keyboardToolbar
    }

因为我没有在控制器本身中调用UITextField,但是在我的UITableViewCell中,有一种方法可以消除键盘抛出错误

Use of unresolved identifier 'view'

代码如下:

//CANNOT DO THE FUNCTION BELOW
    @objc override func dismissKeyboard() {
        view.endEditing(true)
    }

如何通过UITableViewCell完成此操作?

2 个答案:

答案 0 :(得分:0)

您可以添加

weak var delegate:YourVC?

然后在cellForRowAt

cell.delegate = self

然后

delegate?.view.endEditing(true)

您也可以直接在单元格内使用它

self.endEditing(true)
  

UITableViewCell子类不包含在UIViewController子类中的view属性

答案 1 :(得分:0)

如果您要为特定的文本字段添加工具栏,则更适合调用resignFirstResponder()

  

通知此对象已被要求放弃其状态   作为其窗口中的第一响应者。

请记住,它与文本字段的窗口有关,而不是特定的视图,也就是说,您不必担心view即可结束其在您的情况。

致电

inputTextSelectAnswer.resignFirstResponder()

当您打算隐藏键盘inputTextSelectAnswer文本字段时。


此外:

resignFirstResponder vs. endEditing for Keyboard Dismissal