Peq*_*qNP 2 keyboard objective-c ios
我有一个iOS应用程序,我想要做的就是提供更多支持基本命令键组合,如命令+ a,命令+ s,命令+ x,命令+ v和朋友,当用户连接蓝牙键盘时.
我知道这是可能的.Textastic等应用程序和许多其他编辑应用程序都支持这些功能.
我查看了UIResponder(它似乎只用于弹出菜单),UIKeyInput,UITextInput [Delegate]和其他API文档,但没有参考如何执行此操作.
这是很容易支持哪些选项是使用(BOOL)canPerformAction显示在UIMenuController:(SEL)动作withSender:(ID)发送者.但是,当连接蓝牙键盘时,似乎不会调用此方法.所以我要么专门为键盘或其他东西实现另一种方法.
我现在怀疑文本子系统可能负责执行操作.但是,没有我能找到的文件!此外,执行操作时不会调用任何UITextInput委托方法.我几乎认为解决方案是私有的,我需要特别询问Apple如何访问这些功能(我刚刚完成).
更新:
positionFromPosition:inDirection:offset:是用于检测何时按下箭头键的方法.在iOS调用此方法之后,它调用setSelectedText:.你需要解决剩下的管道问题.
更新2:
我能够回答所有问题.请参阅标记的解决方案以获取答案.
弄清楚了.我已经实现了UIMenuController方法来支持剪切,复制和粘贴.通过实现这些功能并将蓝牙键盘连接到物理设备,您将自动获得基本命令选项(a,c,x,v和朋友).您需要完全实现UIMenuController UIResponderStandardEditActions.我想要注意的是,在iOS模拟器中它不会触发命令(a,c,x,v和friends)动作.只有当蓝牙键盘连接到物理设备时,我才能观察到这些功能- 即使在模拟器中启用了"模拟硬件键盘".
关于控制/选项键; 当您完全实现UITextInput时,您还将获得使用箭头键,箭头键+控件,箭头键+选项等时的所有移动功能.查看Apple提供的SimpleTextInput示例代码文件,以便更好地了解如何实现此功能.
话虽如此,您无法创建自己的键盘组合.如果我想要这些功能,Apple会让我为它创建一张票,我不这样做......我真的不在乎支持他们所提供的东西.因此,目前无法执行Command + s(保存)等命令.
一个有趣的小故事; Apple说我想做的事情不可能(使用命令+ c,命令+ v等)与API.我想这表明你对他们的技术专长有何帮助.非常令人失望.
更新:
从iOS 7开始,Apple已经完成了捕获任何关键命令,esc等的简单操作.以下是一个如何捕获各种不同键的示例:
return @[[UIKeyCommand keyCommandWithInput:UIKeyInputEscape modifierFlags:0 action:@selector(escapeKeyPressed:)],
[UIKeyCommand keyCommandWithInput:@"f" modifierFlags:UIKeyModifierCommand action:@selector(commandFindPressed:)],
[UIKeyCommand keyCommandWithInput:@"s" modifierFlags:UIKeyModifierCommand action:@selector(commandSavePressed:)],
[UIKeyCommand keyCommandWithInput:@"b" modifierFlags:UIKeyModifierControl action:@selector(controlBKeyPressed:)],
[UIKeyCommand keyCommandWithInput:@"f" modifierFlags:UIKeyModifierControl action:@selector(controlFKeyPressed:)],
[UIKeyCommand keyCommandWithInput:@"r" modifierFlags:UIKeyModifierControl action:@selector(controlRKeyPressed:)]
];
...
- (void)commandSavePressed:(UIKeyCommand *)keyCommand
{
[self saveFile];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2688 次 |
| 最近记录: |