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

IQKeyBoardManager : Hide keyboard for a specific textfield

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

非常感谢任何帮助。

P.S:由于某些奇怪的原因,当您在第一个文本字段处于活动状态时单击 next 时,它会先跳转到第三个文本字段,然后转到 next 之后的第二个文本字段被再次点击。但是,这与原来的问题无关,所以我就把它留在那里了。

您可以使用 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
    }

Return key Action which textfield you want to resign

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

}

无需处理不同的委托。在你的 viewDidload 中你可以做类似的事情,

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

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