基本上,我想在按下箭头键之一时做些什么。
我读了许多不同的问题。他们中的许多人谈论keyDown
,但这是针对NSViewController
或NSWindow
(this和this(Apple Documention))的。我以为使用此功能时会觉得自己很陌生:
func setKeys() {
let up = UIKeyCommand(input: UIKeyCommand.inputUpArrow, modifierFlags: [], action: #selector(upPressed))
}
@objc func upPressed() {
print("Hello")
}
但是,upPressed()
甚至没有被调用。最好的方法是什么?
答案 0 :(得分:1)
您没有使用返回的UIKeyCommand实例up
。
Apple:“创建键盘命令对象后,可以使用视图控制器的addKeyCommand:方法将其添加到视图控制器中。还可以重写任何响应者类,并直接从响应者的keyCommands属性中返回键盘命令。 “
class Test: UIViewController{
func viewDidLoad(){
super.viewDidLoad()
setKeys()
}
func setKeys() {
let up = UIKeyCommand(input: UIKeyCommand.inputUpArrow, modifierFlags: [], action: #selector(upPressed))
self.addKeyCommand(up)
}
@objc func upPressed() {
print("Hello")
}
}
使用模拟器和硬件键盘对此进行了测试。
添加:如果您要直接通过UIView实现它,则必须执行以下操作:“ ...您还可以覆盖任何响应者类,并直接从响应者的keyCommands属性返回键命令。”因为UIView符合UIResponder
class CustomView: UIView{
override var keyCommands: [UIKeyCommand]? {
return [UIKeyCommand(input: UIKeyCommand.inputUpArrow, modifierFlags: [], action: #selector(upPressed))]
}
@objc func upPressed(){
print("hello world")
}
}