第一次调用时将无法识别带修饰符的UIKeyCommand

Leo*_*Leo 4 keyboard-shortcuts objective-c ios uikeycommand

我通过UIKeyCommand从视图控制器提供实例来支持iOS应用程序中的键盘快捷键.

以下工作类似于魅力,并且每次按下时都会调用提供的选择器e:

- (BOOL)canBecomeFirstResponder {
    return YES;
}

- (NSArray *)keyCommands {
    return @[
        [UIKeyCommand keyCommandWithInput:@"e" modifierFlags:0 action:@selector(foo:)]];
    ];
}
Run Code Online (Sandbox Code Playgroud)

但是,我希望键命令是+ e,或

[UIKeyCommand keyCommandWithInput:@"e" modifierFlags:UIKeyModifierCommand action:@selector(foo:)]
Run Code Online (Sandbox Code Playgroud)

这仍然有效.它会在第一次+ e时不起作用,但之后就会像魅力一样起作用.为什么会发生这种情况,我该如何解决?

Aar*_*ger 12

这是一个已知的错误.作为一种解决方法,您可以通过传入空字符串和不执行任何操作的选择器来注册以响应Command键:

[UIKeyCommand keyCommandWithInput:@""
                    modifierFlags:UIKeyModifierCommand 
                           action:@selector(doNothing:)]
Run Code Online (Sandbox Code Playgroud)

然后,当用户点击+时e,它将是第二次调用,并且它将正常注册.

有关该错误的更多信息可以在OpenRadar上找到.它于2015年1月27日提交,并于2月24日标记为副本.