new*_*299 23 keyboard ipad ios ios6
我试图弄清楚如何检测到连接到iOS设备的蓝牙键盘上的Escape(以及其他键组合,如Ctrl和alt).
一些答案似乎表明这是不可能的.然而,Appstore中有应用程序执行此操作(例如iSSH),因此我认为可能以某种方式使用公共API.
我已经尝试创建自己的UITextInput但是当按下Escape键时,它什么也没有收到.我可以看到iPad可能响应的唯一部分是VoiceOver启用时(Escape在Safari中的作用),所以我想知道是否有通过辅助功能API的方法?
我也试着看看我能从NSNotificationCenter中观察到的东西是否有所帮助,但还没有发现任何东西.
欢迎提出建议,我已经在这一天被黑客攻击了一天,现在我有点亏.
Mik*_*ike 15
您现在可以在iOS 7中执行此操作.例如,要实现转义键,请覆盖UITextView并在您的类中放置以下方法:
- (NSArray *) keyCommands {
UIKeyCommand *esc = [UIKeyCommand keyCommandWithInput: UIKeyInputEscape modifierFlags: 0 action: @selector(esc:)];
return [[NSArray alloc] initWithObjects: esc, nil];
}
- (void) esc: (UIKeyCommand *) keyCommand {
// Your custom code goes here.
}
Run Code Online (Sandbox Code Playgroud)
您无需检查以确定您使用的是iOS 7,因为早期版本的操作系统不会调用keyCommands方法.
使用公共API无法实现AFAIK.我做了一些搜索,esc密钥无法识别.我唯一没做的就是尝试iSSH(花费9欧元:-),但是如果你在AppStore上阅读说明,那么ESC硬件(蓝牙)键盘上的按键似乎不起作用:
彻底的关键配置支持.有arrow键(通过弹出或工具栏).ctrl,alt,esc,tab,shift,Fn键(1-10),`键,PgUp,PgDown和用于这些键没有列出提供了多个装置来添加它们.
蓝牙键盘支持arrow密钥,function密钥以及ctrl通过X11/VNC服务器或终端中的选项密钥映射重新映射密钥.启用后,Option+ key按下映射到等效Ctrl+ key按下.
如您所见,在第二行ESC中未提及密钥.而且,我发现了这个(旧的)帖子.
编辑:
作为你最后的更新,我找到了一种"隐藏" _gsEvent二进制文件内部的方法.但是,我不知道Apple静态分析仪是否可以找到它.诀窍很简单...... _gsEvent在运行时创建选择器(和其他私有选择器)!
-(void)sendEvent:(UIEvent *)event
{
SEL aSelector = NSSelectorFromString([self theSelector]);
if ([event respondsToSelector:aSelector]) {
NSLog(@"Event: %@", event.description);
}
[super sendEvent:event];
}
-(NSString *)theSelector
{
// compose the keyword as you prefer
NSString *sel = [NSString stringWithFormat:@"%@g%@%@ent", @"_", @"s", @"Ev"];
return sel;
}
Run Code Online (Sandbox Code Playgroud)
我试图在二进制文件中搜索,但我找不到_gsEvent关键字,显然是因为它只在运行时创建.
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
7505 次 |
| 最近记录: |