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() } }