Swift - 如何在点击文本框外部后关闭数字键盘
Swift - How to dismiss number keyboard after tapping outside of the textfield
在键盘外部点击时,您将如何从 UITextField 中关闭键盘。我试过 resignFirstResponder()
并且它只在输入一个数字后退出。我也试过textField.inputView = UIView.frame(frame: CGRectZero)
。我已经看到很多关于我所问问题的 Obj-C 版本,但我需要 Swift 等价物,因为我在 Objective-C
方面没有编程经验
感谢您的耐心等待。
向视图添加点击手势识别器并调用 resignFirstResponder() 或 self.view.endEditing(true) 的最佳方式。我更喜欢 endEditing() 因为 resignFirstResponder 必须分别为每个文本字段完成,这与为视图本身完成的 endEditing 不同。
在viewDidLoad中,编写如下代码:
let tapRecognizer = UITapGestureRecognizer()
tapRecognizer.addTarget(self, action: "didTapView")
self.view.addGestureRecognizer(tapRecognizer)
现在编写 didTapView 方法来关闭键盘:
func didTapView(){
self.view.endEditing(true)
}
现在,当您在控制器主视图的键盘外部点击时,它会调用 didTapView 方法并关闭键盘。
Swift 3.x
viewDidLoad 中的代码应该是:
let tapRecognizer = UITapGestureRecognizer()
tapRecognizer.addTarget(self, action: #selector(ViewController.didTapView))
self.view.addGestureRecognizer(tapRecognizer)
其中 ViewController 应该是您的视图控制器的名称。
谢谢
如果你不想定义一个额外的方法,有一个稍微简单的方法也可以
let tapRecognizer = UITapGestureRecognizer(target: self, action: "endEditing:")
view.addGestureRecognizer(tapRecognizer)
您也可以使用此方法在按下 'Return'
时关闭键盘
func textFieldShouldReturn(textField: UITextField!) -> Bool {
self.view.endEditing(true);
return false;
}
确保设置你的委托
Swift 3 人测试并工作
// dismiss keyboard on touch outside textfield
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for txt in self.view.subviews {
if txt.isKind(of: UITextField.self) && txt.isFirstResponder {
txt.resignFirstResponder()
}
}
}
尽情享受
Swift 2.3 测试和工作
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
for txt in self.view.subviews {
if txt.isKindOfClass(UITextField.self) && txt.isFirstResponder() {
txt.resignFirstResponder()
}
}
}
尽情享受
我在网站上找到了这段代码,它对我来说非常有用!
//FUNCTION TO DISMISS THE KEYBOARD
func initializeHideKeyboard(){
//Declare a Tap Gesture Recognizer which will trigger our dismissMyKeyboard() function
let tap: UITapGestureRecognizer = UITapGestureRecognizer(
target: self,
action: #selector(dismissMyKeyboard))
//Add this tap gesture recognizer to the parent view
view.addGestureRecognizer(tap)
}
@objc func dismissMyKeyboard(){
//endEditing causes the view (or one of its embedded text fields) to resign the first responder status.
//In short- Dismiss the active keyboard.
view.endEditing(true)
}
然后只需在按钮操作或类似操作中调用此函数即可:
dismissMyKeyboard()
在键盘外部点击时,您将如何从 UITextField 中关闭键盘。我试过 resignFirstResponder()
并且它只在输入一个数字后退出。我也试过textField.inputView = UIView.frame(frame: CGRectZero)
。我已经看到很多关于我所问问题的 Obj-C 版本,但我需要 Swift 等价物,因为我在 Objective-C
感谢您的耐心等待。
向视图添加点击手势识别器并调用 resignFirstResponder() 或 self.view.endEditing(true) 的最佳方式。我更喜欢 endEditing() 因为 resignFirstResponder 必须分别为每个文本字段完成,这与为视图本身完成的 endEditing 不同。
在viewDidLoad中,编写如下代码:
let tapRecognizer = UITapGestureRecognizer()
tapRecognizer.addTarget(self, action: "didTapView")
self.view.addGestureRecognizer(tapRecognizer)
现在编写 didTapView 方法来关闭键盘:
func didTapView(){
self.view.endEditing(true)
}
现在,当您在控制器主视图的键盘外部点击时,它会调用 didTapView 方法并关闭键盘。
Swift 3.x
viewDidLoad 中的代码应该是:
let tapRecognizer = UITapGestureRecognizer()
tapRecognizer.addTarget(self, action: #selector(ViewController.didTapView))
self.view.addGestureRecognizer(tapRecognizer)
其中 ViewController 应该是您的视图控制器的名称。
谢谢
如果你不想定义一个额外的方法,有一个稍微简单的方法也可以
let tapRecognizer = UITapGestureRecognizer(target: self, action: "endEditing:")
view.addGestureRecognizer(tapRecognizer)
您也可以使用此方法在按下 'Return'
时关闭键盘func textFieldShouldReturn(textField: UITextField!) -> Bool {
self.view.endEditing(true);
return false;
}
确保设置你的委托
Swift 3 人测试并工作
// dismiss keyboard on touch outside textfield
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for txt in self.view.subviews {
if txt.isKind(of: UITextField.self) && txt.isFirstResponder {
txt.resignFirstResponder()
}
}
}
尽情享受
Swift 2.3 测试和工作
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
for txt in self.view.subviews {
if txt.isKindOfClass(UITextField.self) && txt.isFirstResponder() {
txt.resignFirstResponder()
}
}
}
尽情享受
我在网站上找到了这段代码,它对我来说非常有用!
//FUNCTION TO DISMISS THE KEYBOARD
func initializeHideKeyboard(){
//Declare a Tap Gesture Recognizer which will trigger our dismissMyKeyboard() function
let tap: UITapGestureRecognizer = UITapGestureRecognizer(
target: self,
action: #selector(dismissMyKeyboard))
//Add this tap gesture recognizer to the parent view
view.addGestureRecognizer(tap)
}
@objc func dismissMyKeyboard(){
//endEditing causes the view (or one of its embedded text fields) to resign the first responder status.
//In short- Dismiss the active keyboard.
view.endEditing(true)
}
然后只需在按钮操作或类似操作中调用此函数即可:
dismissMyKeyboard()