关闭tableviewcontroller中uitableviewcell中文本字段的键盘 - Swift

Posted

技术标签:

【中文标题】关闭tableviewcontroller中uitableviewcell中文本字段的键盘 - Swift【英文标题】:Dismiss keyboard for textfield in uitableviewcell in tableviewcontroller - Swift 【发布时间】:2016-05-12 18:05:08 【问题描述】:

我的自定义表格视图单元中有一个文本字段和文本视图。

我有 4 个不同的原型单元,其中创建了 4 个不同的类。一个原型单元格中有一个文本字段,另一个原型单元格中有一个文本视图。

我不确定我该怎么做,我不明白那里的 obj-c 答案。

我试过了

override func viewDidLoad() 
    super.viewDidLoad()

    let tap: UIGestureRecognizer = UIGestureRecognizer(target: self, action: #selector(UIInputViewController.dismissKeyboard))
    view.addGestureRecognizer(tap) 

func dismissKeyboard() 
    self.view.endEditing(true)

我想试试

UITextFieldDelegatetouchesbegantextfieldshouldreturn 方法,但在我的 tableviewcontroller 中没有可调用的文本字段。

【问题讨论】:

您能否明确说明您要在这里做什么? 我想找到关闭键盘的方法,好像我错过了设置键盘以在情节提要中以交互方式关闭!但是,它不会使用“返回”键关闭键盘 在这种情况下,您需要在每个包含UITextFieldUITextViewUITableViewCell 类中使用@rMickeyD 的答案。 【参考方案1】:

转到故事板中的属性检查器,然后单击 tableView 并设置键盘以交互方式关闭。

或者

设置 textField 委托并实现

override func viewDidLoad() 
    super.viewDidLoad()

    textField.delegate = self
 

func textFieldShouldReturn(textField: UITextField) -> Bool // called when 'return' key pressed. return false to ignore.

    textField.resignFirstResponder()
    return true

【讨论】:

第一种方法有效!但对于第二个,我没有任何文本字段可以在viewDidLoad 中输入。我的文本字段在tableviewcell 的类中【参考方案2】:

我遇到了同样的问题,你可以用 IQKeyboardManager 解决这个问题,你不需要让自定义单元类复杂化,只需将它安装到你的项目中,当你完成安装时,在 appDelegate 里面didFinishLaunchingWithOptions 方法,添加这行代码:

IQKeyboardManager.shared.shouldResignOnTouchOutside = true

从here 获取 IQKeyboardManager。

【讨论】:

以上是关于关闭tableviewcontroller中uitableviewcell中文本字段的键盘 - Swift的主要内容,如果未能解决你的问题,请参考以下文章

如何通过单击 TableCell 中的按钮将我的 TableCell 中的标签值传递给 TableViewController? [关闭]

表格视图中的节数不等于我设置的

关闭导航弹出框后,共享 iAd 横幅会卸载广告

关闭模式视图时如何在 UITableView 中显示数据

关闭模态视图并调整父视图的大小?

关闭时横向 MPMoviePlayerViewController 纵向