gpt4 book ai didi

ios - 子类化 UIView 时如何检测箭头键?

转载 作者:行者123 更新时间:2023-11-28 05:42:11 24 4
gpt4 key购买 nike

基本上,我想在按下其中一个箭头键时执行某些操作。

我读过很多不同的问题。他们中的许多人谈论 keyDown,但那是针对 NSViewControllerNSWindow(thisthis(Apple 文档))。当我使用这个时,我以为我在做某事:

func setKeys() {
let up = UIKeyCommand(input: UIKeyCommand.inputUpArrow, modifierFlags: [], action: #selector(upPressed))
}

@objc func upPressed() {
print("Hello")
}

但是,甚至没有调用 upPressed()。实现此目标的最佳方法是什么?

最佳答案

您没有使用返回的 UIKeyCommand 实例 up

Apple:“在创建一个键命令对象后,您可以使用 View Controller 的 addKeyCommand: 方法将其添加到 View Controller 。您还可以覆盖任何响应器类并直接从响应器的 keyCommands 属性返回键命令。 "

class Test: UIViewController{

override 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")
}

}

关于ios - 子类化 UIView 时如何检测箭头键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56229671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com