iOS Swift检测键盘事件
我能以某种方式检测来自iOS键盘的事件吗?
我想在没有UITextField
或任何这种types的对象的UIViewController
上检测到这种事件。
我所有的是UIView
四个圆圈,我想用不同的颜色来绘制它们,当按下键盘上的button时。
你没有任何东西要从键盘input。 要使键盘出现,您的视图中必须有UITextField或UITextView对象。
但是这里是检测你的视图控制器中的键盘事件的过程。 您可以在视图控制器上为观察者设置键盘通知。
要在swift 3中注册键盘通知,请在视图控制器的viewDidLoad()或viewWillAppear()方法中使用写入这些行
NotificationCenter.default.addObserver(self, selector: #selector(keyBoardWillShow(notification:)), name: .UIKeyboardWillShow, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(keyBoardWillHide(notification:)), name: .UIKeyboardWillHide, object: nil)
然后在视图控制器中实现两个方法keyBoardWillHide(:)和keyBoardWillShow(:)方法
func keyBoardWillShow(notification: NSNotification) { //handle appearing of keyboard here } func keyBoardWillHide(notification: NSNotification) { //handle dismiss of keyboard here }
您可以使用键盘处理程序创build自己的视图
//Example class CustomKeyInput: UIControl, UIKeyInput{ //UIKeyInput public var hasText: Bool { return false } public func insertText(_ text: String){ print(#function) print(text) print(text.characters.count) } public func deleteBackward(){ print(#function) } //UIControl override var canBecomeFirstResponder: Bool {return true} } //Usage class ViewController: UIViewController { @IBOutlet weak var keyView: CustomKeyInput! override func viewDidAppear(_ animated: Bool) { keyView.becomeFirstResponder() } }