当点击键盘外部时,如何从UITextField中解除键盘.我试过了resignFirstResponder(),它只在输入一个数字后退出.我也试过了textField.inputView = UIView.frame(frame: CGRectZero).我见过很多Obj-C的问题,但是我需要Swift等价物,因为我没有Objective-C的编程经验
感谢您的时间和耐心.
mom*_*per 16
向视图添加点击手势识别器并调用resignFirstResponder()或self.view.endEditing(true)的最佳方法.我更喜欢endEditing(),因为必须分别为每个文本字段完成resignFirstResponder,这与为视图本身完成的endEditing不同.
在viewDidLoad中,编写以下代码:
let tapRecognizer = UITapGestureRecognizer()
tapRecognizer.addTarget(self, action: "didTapView")
self.view.addGestureRecognizer(tapRecognizer)
Run Code Online (Sandbox Code Playgroud)
现在编写didTapView方法来关闭键盘:
func didTapView(){
self.view.endEditing(true)
}
Run Code Online (Sandbox Code Playgroud)
现在,当您在控制器的主视图上点击键盘外部时,它将调用didTapView方法并关闭键盘.
Swift 3.x
viewDidLoad中的代码应该是:
let tapRecognizer = UITapGestureRecognizer()
tapRecognizer.addTarget(self, action: #selector(ViewController.didTapView))
self.view.addGestureRecognizer(tapRecognizer)
Run Code Online (Sandbox Code Playgroud)
其中ViewController应该是视图控制器的名称.
谢谢
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()
}
}
}
Run Code Online (Sandbox Code Playgroud)
请享用
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()
}
}
}
Run Code Online (Sandbox Code Playgroud)
请享用
您还可以使用此方法在按“Return”时关闭键盘
func textFieldShouldReturn(textField: UITextField!) -> Bool {
self.view.endEditing(true);
return false;
}
Run Code Online (Sandbox Code Playgroud)
确保设置您的代表
| 归档时间: |
|
| 查看次数: |
8092 次 |
| 最近记录: |