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 中始终保持视图位于顶部(不要使用键盘滚动)
在Objective C的IQKeyboardManager中隐藏下一个上一个按钮