我能以某种方式从iOS键盘检测事件吗?
我想在没有UITextField
或任何类型的对象的UIViewController
上检测此类事件。
我只有四个UIView
的圆圈,当按下键盘上的按钮时,我想把它们画成不同的颜色。
发布于 2017-04-04 14:36:29
您没有任何对象来接受来自键盘的输入。要显示键盘,视图中必须有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
}
发布于 2017-04-04 14:46:39
您可以使用键盘处理程序创建自己的视图
//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()
}
}
https://stackoverflow.com/questions/43199794
复制相似问题