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

问题描述 投票:0回答:3

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

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

我不知道我该怎么做,我也不明白那里的 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)
}

我想尝试一下

UITextFieldDelegate
touchesbegan
textfieldshouldreturn
方法,但是在我的tableviewcontroller中没有可以调用的文本字段。

swift uitableview uitextfield
3个回答
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
}

0
投票

我遇到了同样的问题,您可以使用 IQKeyboardManager 解决此问题,您不需要使用自定义单元类使事情变得复杂,只需将其安装在您的项目上,当您完成安装后,在 didFinishLaunchingWithOptions 方法内的 appDelegate 中,添加这行代码:

IQKeyboardManager.shared.shouldResignOnTouchOutside = true

这里获取 IQKeyboardManager。


0
投票

您可以使用cancelsTouchesInView来关闭键盘。

覆盖 func viewDidLoad() { super.viewDidLoad() let tap = UITapGestureRecognizer(target: self, action: #selector(UIInputViewController.dismissKeyboard)) tap.cancelsTouchesInView = false view.addGestureRecognizer(tap) }

@objc func dismissKeyboard() { view.endEditing(true) }

© www.soinside.com 2019 - 2024. All rights reserved.