问题标签 [uikeycommand]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
103 浏览

mac-catalyst - 检测没有修饰符的按键

我想在我的 Catalyst 应用程序中捕获按键。

不幸的是,modifierFlags 不能为 nil,并且 Catalyst 不支持 NSEvent。有没有办法检测单键?例如键盘应用程序或游戏?

0 投票
2 回答
2040 浏览

swiftui - SwiftUI iOS - how to capture hardware key events

I’m new to iOS development. Following a tutorial I have created a simple calculator using SwiftUI.

I have a keyboard attached to my iPad, and I would like to be able to enter values using the keyboard.

How can I capture and handle hardware keyboard events in a SwiftUI app (with no text field) ?  I have tried to use the keyCommands on the SceneDelegate (UIResponder) as shown here, but that doesn’t work for me. As soon as I press any key on my iPad, I get “Connection to deamon was invalidated” in the XCode trace view.

Thanks

0 投票
1 回答
213 浏览

swiftui - SwiftUI iOS - 如何使用捕获的硬件按键事件

如何在 SwiftUI 中使用按键信息?我尝试使用@EnvironmentObject 与我的 SwiftUI 共享密钥,但我每次在 sendKeybKey 中崩溃:线程 1:致命错误:未找到 UserData 类型的 ObservableObject。UserData 的 View.environmentObject(_:) 作为该视图的祖先可能会丢失。在 .environmentObject 中已在 SceneDelegate 中使用,但这是错误的吗?我的代码:

}

在场景委托中

和用户数据:

我的 SwiftUI 视图

}

有人想快速帮助新手吗?

谢谢!

瓦尔德马尔

0 投票
2 回答
202 浏览

ios - 视图控制器的按键命令在模态显示时包含在内

我正在为我的应用程序添加键盘快捷键。有一个视图控制器呈现另一个控制器:

两者都定义了快捷方式。当模态视图控制器被呈现时,Discoverability 弹出窗口包括用于呈现和呈现的视图控制器的快捷方式。直观地说,应该只包含模态视图控制器的快捷方式(我们不应该能够与呈现的视图控制器交互,对吧?)

我可以通过覆盖呈现视图控制器的keyCommands属性来解决这个问题,但这是个好主意吗?

一般来说,这种行为背后的原因是什么?这是错误还是功能?


更新:添加canPerformAction(_:sender:)到呈现视图控制器(如@buzzert所建议),但问题仍然存在。

0 投票
1 回答
154 浏览

ios - UIResponder:未调用 keyCommands;确认 isFirstResponder

我的应用程序有一个密码视图,在概念上类似于 iOS 解锁屏幕。这是我在新 UIWindow 中呈现的 UIViewController。工作正常。我正在添加使用硬件键盘输入密码的功能。该keyCommands方法不会被调用,因此按键不会被识别,直到用户至少点击屏幕上的任意位置一次。它是一个全屏 UIWindow/UIViewController,所以大概是 UIWindow/UIViewController 中的一个点击。一旦点击发生,keyCommands将按预期调用,并且一切正常。我不想要求用户在输入密码之前点击他们的屏幕。

知道这里发生了什么,特别是为什么用户需要点击屏幕(以及如何避免这种要求)?

我已经通过包含重复的 NSTimer 调用来验证 UIViewController 是 firstResponder 。

这是创建 UIWindow 的代码:

除了我要问的硬件键盘代码之外,我几乎七年前在这里写了所有东西。所以我不记得......任何事情的具体逻辑。我确实知道我使用了 UIWindow,因为这是一个安全视图,它绝对必须高于所有其他视图,包括应用程序可能在可见时添加的一些视图。理想与否,它一直在完美运行。如果需要进行实质性的重新架构以使硬件键盘在这里工作,那么硬件键盘功能将被丢弃。

0 投票
0 回答
27 浏览

ios - 在 UndoManager 中支持不重做的撤消

在我的应用程序中,用户界面提供了一个按钮,允许人们撤消他们已经执行的操作,但是一旦他们撤消了一个操作,就无法重做。我现在想更新我的应用程序以支持 Command Z 键盘快捷键撤消。UIKeyCommand但是,如果我用input: "z"and创建一个modifierFlags: .command,它会被忽略并且不会显示为可用的键盘快捷键。似乎必须使用UndoManager自动获取撤消和重做键盘快捷键。但是重做选项没有做任何事情,所以我想阻止该键盘快捷键出现在用户面前。我试图通过返回 false 来做到这一点,canPerformAction:sender:但有趣的是并没有删除它。如何在使用 UndoManager 时支持撤消但不支持重做、保持重做堆栈为空或以其他方式隐藏重做选项?

0 投票
2 回答
497 浏览

ios - iPadOS 15 beta 中带有 UIKeyCommand 的键盘快捷键

出于某种原因,我无法在 iPadOS 15(beta 5)中使用硬件键盘快捷键。它们适用于大多数键,但不适用于箭头键和 Tab 键。

在 Xcode 13(beta 4)中编译并在 iPadOS 14.5 模拟器上运行时,相同的代码似乎运行良好,但在使用相同的 Xcode 但在 iPadOS 15 sim 上构建时拒绝运行。我已经在 iPadOS 15 beta 到 5 的实际设备上进行了尝试,结果相同。

这是一个最小的例子:

我没有找到任何相关的报告或打开的雷达,所以我怀疑我可能在这里遗漏了一些东西。如果应该报告,我在哪里报告这样的错误?

谢谢你。

0 投票
0 回答
46 浏览

ios - iOS 15 中 QLPreviewController 中的 UIKeyCommand

在 iOS 15 中,键盘处理发生了变化。除了通常keyCommands的程序员重写之外,还必须为自己的命令分配比系统命令更高的优先级。

因此,以下代码适用于我:

另一方面,几乎相同的代码但继承自QLPreviewController 不起作用


在视图层次结构中,我发现实际上有某种额外的导航,也许是偷了我的键盘按键,也许这就是上面的代码不起作用的原因。

在此处输入图像描述


有谁知道如何解决或解决此问题?显然,额外的导航来自 Apple,我无法访问这些额外提供的控制器。

我试图打印以下详细信息,但都没有帮助:


值得添加我也尝试添加方法

并且test永远不会出现在控制台中,无论我按下什么按钮。很明显,其他东西窃取了按键。这在 iOS 15 之前并没有发生。