IQKeyBoardManager :隐藏特定文本字段的键盘

Posted

技术标签:

【中文标题】IQKeyBoardManager :隐藏特定文本字段的键盘【英文标题】:IQKeyBoardManager : Hide keyboard for a specific textfield 【发布时间】:2017-12-01 05:50:12 【问题描述】:

在我的应用程序中,我有一个表单,用户可以在其中填写他/她的信息,该表单有一些文本字段,其中用户可以选择他们的国家/地区。此文本文件是一个下拉列表,当它处于活动状态时会显示一个下拉列表(表格视图),其中包含要选择的国家列表。我创建了一个演示项目,以重现该问题并在此处分享。 在这个演示中,我添加了 3 个文本字段,当用户使用键盘上的next 按钮转到第二个文本字段时,会显示一个表格视图。现在我想要实现的是在显示下拉表格视图时我的键盘应该隐藏。 我已经花了很长时间试图解决这个问题,但没有成功。 这是演示项目的链接: https://github.com/tejaskutal/IQKeyboardManagerDemo

非常感谢任何帮助。

P.S:出于某种奇怪的原因,当您在第一个文本文件处于活动状态时单击 next 时,它会先跳转到第三个文本字段,然后再单击一次 next 后转到第二个文本字段。但是,这与原始问题无关,因此我将其留在那里。

【问题讨论】:

【参考方案1】:

无需处理不同的委托。在您的viewDidload 中,您可以执行以下操作,

 yourTextField.inputView = UIView.init(frame: CGRect.zero)
 yourTextField.inputAccessoryView = UIView.init(frame: CGRect.zero)

因此,不会出现该文本字段的键盘或工具栏。

【讨论】:

【参考方案2】:

您可以使用UITextField 的委托并实现textFieldShouldBeginEditing。类似的东西

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool 
        if textField == theTextFieldToIgnore 
            view.endEditing(true)
            return false
        

至于你的 textField 链接,你应该实现 textFieldShouldReturn

func textFieldShouldReturn(_ textField: UITextField) -> Bool 
        if textField == firstOne 
            textField.resignFirstResponder()
            secondOne.becomeFirstResponder()
        
        return true
    

【讨论】:

如果我在textFieldShouldBeginEditing 中添加return false,则任何文本字段都不会显示关键字,对吧? @TejasK 确实是的。你应该在你的代码中使用检查,我也更新了我的代码。 :) 嗨,我试过这个,但是由于前面的文本字段,这不会关闭显示的键盘。请求您检查 GitHub 上的代码。 好的,更新了代码。我只是做了一些不正确的假设。 view.endEditing(true) 将关闭任何以前打开的键盘。 No [self.view endEditing:YES] 没有关闭键盘,这就是我的问题:(【参考方案3】:

返回键 Action 你想退出哪个文本字段

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
        [self.yourTf resignFirstResponder];


【讨论】:

以上是关于IQKeyBoardManager :隐藏特定文本字段的键盘的主要内容,如果未能解决你的问题,请参考以下文章

如何在 IQKeyboardManager iOS Swift 3 中隐藏工具栏

阻止 IQKeyboardManager 删除我的导航栏

在 IQKeyboardManager 中始终保持视图位于顶部(不要使用键盘滚动)

在Objective C的IQKeyboardManager中隐藏下一个上一个按钮

IQKeyboardManager 在我的视图控制器中无法正常工作

Swift 3 / IQKeyboardManager:如何更改工具栏的背景颜色、完成颜色、箭头颜色?