objective-c - iOS 中的键盘快捷键?

标签 objective-c cocoa-touch ipad ios

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

长版:

在我的新 iPad 及其闪闪发光的键盘底座的精彩发现之旅中,我发现,令我高兴的是,在标准问题 TextView 中编辑文本时;命令包括用于复制粘贴的 ⌘C/⌘P 和用于行和字符跳转的 ^A、^B、^E 和 friend 。

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

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

很多游戏,例如 Civilization Revolutions 和类似游戏,只要简单地添加使用箭头键移动单位和使用回车键结束回合的功能,就会从中受益匪浅。

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

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

最佳答案

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

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

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

我自己的免责声明:我没有完成所有艰苦的工作来以不应该使用的方式使用 UITextInput,所以我不会知道真正让它发挥作用是多么可行。我真的不想。相反,让我们提交所有错误报告,让 Apple 创建一个 API,使我们能够从键盘获得更精确的输入。

关于objective-c - iOS 中的键盘快捷键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3397339/

相关文章:

iphone - 从我的 iPhone 应用程序调用电话

ios - LocationManager requestWhenInUseAuthorization 中的语法错误

iphone - uiNavigationController 推送 View Controller 时出错

ios - 是否可以将 iOS 7 UIViewController 转换(特别是交互)与 subview Controller 一起使用?

javascript - 在 "ended"上播放数组中的下一个视频

objective-c - 为 PDF 查看器自动调整 UIViews 的大小

ios - uinavigationbar 背景图像隐藏标题

ios - 在上下文上绘图时在 UIImage 上应用 CATransform3D

ios - UITableViewCell subview 在选择时消失(但此 subview 中的内容可见)

ios - 用 UINavigationController 中的另一个 View 正确替换顶 View