你知道(你明白)为什么我不能从FirstResponder辞职并隐藏键盘吗?
FYI: Xcode 9
import UIKit
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var label: UILabel!
@IBOutlet weak var text: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
self.text.delegate = self
let tap = UITapGestureRecognizer(target: self, action: #selector(ViewController.tapFunction))
label.isUserInteractionEnabled = true
label.addGestureRecognizer(tap)
}
var keyboardInputEnabled = true
@objc func tapFunction(sender:UITapGestureRecognizer) {
if self.keyboardInputEnabled {
self.text.becomeFirstResponder()
}else{
self.view.endEditing(true)
self.text.resignFirstResponder()
}
self.keyboardInputEnabled = !self.keyboardInputEnabled
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
return self.keyboardInputEnabled
}
func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
return self.keyboardInputEnabled
}
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
return self.keyboardInputEnabled
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}发布于 2017-10-25 12:47:45
因为textFieldShouldEndEditing在第二次运行tapFunction时返回false,这使得它无法结束编辑模式。
取自这
通常,您将从此方法返回true,以允许文本字段退出第一个响应状态。但是,如果委托检测到文本字段中的无效内容,则可能返回false。返回false会防止用户切换到另一个控件,直到文本字段包含有效值为止。
发布于 2017-10-25 12:39:32
试一试
禁用键盘的self.view.endEditing(true)
https://stackoverflow.com/questions/46932627
复制相似问题