iOS中的键盘快捷键?

Posted

技术标签:

【中文标题】iOS中的键盘快捷键?【英文标题】:Keyboard shortcuts in iOS? 【发布时间】:2010-08-03 14:12:58 【问题描述】:

是否可以在第三方 iPad/iPhone 应用程序中捕获命令键序列?

加长版:

在我发现带有闪亮键盘底座的新 iPad 的精彩探索之旅中,我发现,在标准问题文本视图中编辑文本时,我感到非常高兴;命令范围从用于复制粘贴的 ⌘C/⌘P 和用于行和字符跳转的 ^A、^B、^E 和朋友。

到目前为止一切都很好,是吗?问题是,这种令人着迷的行为似乎仅限于文本字段,更具体地说,是标准问题文本字段。我真正想要的是捕获此类事件以供我自己使用。

我经常发现很多应用程序的一个问题是,如果没有键盘底座(例如 iWork Suite),它们要么接近无用,或者至少很笨重,或者接近无用,或者至少很笨重, 键盘底座(大多数其他应用程序不严重依赖文本输入,而是触摸手势[也就是说,大多数其他应用程序时期])。

许多游戏,例如《文明革命》和类似的游戏,只要简单地添加使用箭头键移动单位和回车键结束回合的能力,就会大大受益。

那么问题是,如上所述:有没有一种方法可以捕获和响应这些事件,以便为那些想要这样做并拥有硬件的人提供触摸命令的替代方法?

免责声明: 当然,我无意开发完全依赖键盘输入的应用程序,其他人也不应该这样做。触摸界面是最重要的。只是并不总是完全实用。

【问题讨论】:

好像是重复的:***.com/questions/3199635/… 【参考方案1】:

ios 中从键盘获取输入的唯一方法(据我所知)是使用 UITextInput 协议。不幸的是,该协议没有给您按下的原始键,而是向您发送诸如“插入此字符串”和“将插入符号移动到此位置”之类的消息。因此,要知道按下了箭头键,您需要进行一些挖掘。

至于带有修饰键的快捷方式,例如复制/粘贴或撤消/重做,Apple 似乎只支持基本功能,不允许您创建自定义功能。他们使用UIResponder:–canPerformAction:withSender:和undoManager中的方法。

因此,如果我正在编写游戏并想利用键盘,我将继承 UIResponder 并使其符合 UITextInput 协议。然后让它成为第一响应者。但是,如果没有物理键盘,这可能会调出软件键盘。

我自己的免责声明:我没有尽一切努力以不适合使用的方式使用 UITextInput,所以我不知道它有多可行真正让它发挥作用。我真的不想。相反,让我们提交所有错误报告,让 Apple 创建一个 API,让我们能够从键盘获得更精确的输入。

【讨论】:

无法阻止软件键盘弹出。不适用于公共 API。 如果您已将 iPhone 或 iPad 与硬件键盘配对,则可以。 您可以设置一个自定义的 inputView 来代替默认键盘显示,并且通过将该视图设置为隐藏您可以有效地隐藏键盘。【参考方案2】:

在 iOS 7 中,添加了 UIResponder 属性 keyCommands 和类 UIKeyCommand 以支持快捷方式。只需覆盖keyCommands 以返回UIKeyCommand 的数组,您就可以开始了。

【讨论】:

【参考方案3】:

值得一提:虽然细节目前处于保密协议之下,但 Apple 正在 iOS 7 中添加对键盘快捷键/事件的支持。

我怀疑它的工作方式类似于它在 Mac OS X 上的工作方式,this answer 中对类似问题进行了简要描述。

【讨论】:

以上是关于iOS中的键盘快捷键?的主要内容,如果未能解决你的问题,请参考以下文章

ios模拟器快捷键

iOS7 键盘快捷键是如何实现的?

Mac 键盘快捷键在 iOS 模拟器上不起作用

swift WIP:Emacs的iOS键盘快捷键

iOS 关闭/收起虚拟键盘的若干方法

移动端IOS H5(VUE)界面被键盘顶起,键盘收起后无法恢复正常