gpt4 book ai didi

SwiftUI iOS - 如何捕获硬件按键事件

转载 作者:行者123 更新时间:2023-12-03 16:03:12 26 4
gpt4 key购买 nike

我是 iOS 开发的新手。按照教程,我使用 SwiftUI 创建了一个简单的计算器。

我的 iPad 上有一个键盘,我希望能够使用键盘输入值。

如何在 SwiftUI 应用程序(没有文本字段)中捕获和处理硬件键盘事件?
我尝试在 SceneDelegate (UIResponder) 上使用 keyCommands,如下所示,但这对我不起作用。只要我按下 iPad 上的任意键,我就会在 XCode 跟踪 View 中看到“与守护进程的连接已失效”。

 class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?

override var canBecomeFirstResponder: Bool {
return true;
}
override var keyCommands: [UIKeyCommand]? {
return [
UIKeyCommand(input: "a", modifierFlags: [], action: #selector(test)),
UIKeyCommand(input: UIKeyCommand.inputLeftArrow, modifierFlags: [], action: #selector(test))
]
}

@objc func test(_ sender: UIKeyCommand) {
print("test was pressed")
}

谢谢

最佳答案

它需要覆盖托管 View Controller ,并且一切正常。使用 Xcode 11.2/iOS 13.2 测试

这是示例代码

class KeyTestController<Content>: UIHostingController<Content> where Content: View {

override func becomeFirstResponder() -> Bool {
true
}

override var keyCommands: [UIKeyCommand]? {
return [
UIKeyCommand(input: "1", modifierFlags: [], action: #selector(test)),
UIKeyCommand(input: "0", modifierFlags: [], action: #selector(test)),
UIKeyCommand(input: UIKeyCommand.inputLeftArrow, modifierFlags: [], action: #selector(test))
]
}

@objc func test(_ sender: UIKeyCommand) {
print(">>> test was pressed")
}

}

和某处 SceneDelegate以下
window.rootViewController = KeyTestController(rootView: contentView)

关于SwiftUI iOS - 如何捕获硬件按键事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59797650/

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