点击文本字段后如何立即隐藏键盘?
how to hide keyboard immediately after tapping on a text field?
我有一个自定义文本字段。当用户点击它时,它使用 UITableViewController
打开一个弹出窗口。
我想阻止键盘弹出我的文本字段,看起来不可能。
所以我尝试了以下在模拟器中工作的代码,但是它不适用于实际的iPhone!!!
@IBAction func provincePressed(_ sender: Any) {
(sender as AnyObject).resignFirstResponder()
self.view.endEditing(true)
怎么了?以及如何让它适用于实际的 iPhone?或者可能根本不显示键盘!
尝试在 textFieldShouldBeginEditing 方法中 return false
func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
return false
}
Swift 4
您可以像这样在 textFieldDidBeginEditing
方法中调用 textField.resignFirstResponder()
:
-(void)textFieldDidBeginEditing:(UITextField *)textField {
if (textField.tag == 1) {
//this is textfield 2, so call your method here
textField.resignFirstResponder()
}
}
你应该给想要的文本字段一个标签。如果您希望 ViewContriler 中的所有文本字段具有相同的行为,则不需要该部分。
此外,不要忘记从 UITextFieldDelegate
扩展您的 ViewController 并将 textField 委托给您的 ViewController 。
textField.delegate = self
预先将文本字段的 isEnabled
设置为 false
。
这是根据 SafoineMoncefAmine 的回答。
-(void)textFieldDidBeginEditing:(UITextField *)textField {
if (textField == yourTextfield) {// No need tag Use QA Manager to handle the textfield
textField.resignFirstResponder()
// Open your menu here, add view, show the menu here.
}
}
除了这个答案,
extension MyViewController: UITextFieldDelegate {
func textField(_ textField: UITextField,
shouldChangeCharactersIn range: NSRange,
replacementString string: String) -> Bool {
if textField == YourTextField{
return false
}
else{
return true
}
}
}
您可以只禁用来自 UITextField
的用户交互,并用 UIView
覆盖它并将 uigesturerecognizer
添加到该视图以触发您的事件。
我有一个自定义文本字段。当用户点击它时,它使用 UITableViewController
打开一个弹出窗口。
我想阻止键盘弹出我的文本字段,看起来不可能。
所以我尝试了以下在模拟器中工作的代码,但是它不适用于实际的iPhone!!!
@IBAction func provincePressed(_ sender: Any) {
(sender as AnyObject).resignFirstResponder()
self.view.endEditing(true)
怎么了?以及如何让它适用于实际的 iPhone?或者可能根本不显示键盘!
尝试在 textFieldShouldBeginEditing 方法中 return false
func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
return false
}
Swift 4
您可以像这样在 textFieldDidBeginEditing
方法中调用 textField.resignFirstResponder()
:
-(void)textFieldDidBeginEditing:(UITextField *)textField {
if (textField.tag == 1) {
//this is textfield 2, so call your method here
textField.resignFirstResponder()
}
}
你应该给想要的文本字段一个标签。如果您希望 ViewContriler 中的所有文本字段具有相同的行为,则不需要该部分。
此外,不要忘记从 UITextFieldDelegate
扩展您的 ViewController 并将 textField 委托给您的 ViewController 。
textField.delegate = self
预先将文本字段的 isEnabled
设置为 false
。
这是根据 SafoineMoncefAmine 的回答。
-(void)textFieldDidBeginEditing:(UITextField *)textField {
if (textField == yourTextfield) {// No need tag Use QA Manager to handle the textfield
textField.resignFirstResponder()
// Open your menu here, add view, show the menu here.
}
}
除了这个答案,
extension MyViewController: UITextFieldDelegate {
func textField(_ textField: UITextField,
shouldChangeCharactersIn range: NSRange,
replacementString string: String) -> Bool {
if textField == YourTextField{
return false
}
else{
return true
}
}
}
您可以只禁用来自 UITextField
的用户交互,并用 UIView
覆盖它并将 uigesturerecognizer
添加到该视图以触发您的事件。