带有修饰符的 UIKeyCommand 在第一次调用时不会被识别

UIKeyCommand with modifier won't be recognized on first invocation

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

下面的代码就像一个魅力,每次按下 e 时都会调用提供的选择器:

- (BOOL)canBecomeFirstResponder {
    return YES;
}

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

不过,我希望按键指令是+e,或者

[UIKeyCommand keyCommandWithInput:@"e" modifierFlags:UIKeyModifierCommand action:@selector(foo:)]

这在某种程度上仍然有效。 它第一次不会工作 你按 +e,但它会像在那之后的魅力。为什么会发生这种情况,我该如何解决?

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

[UIKeyCommand keyCommandWithInput:@""
                    modifierFlags:UIKeyModifierCommand 
                           action:@selector(doNothing:)]

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

可以找到有关该错误的更多信息 here on OpenRadar。 2015年1月27日提交,2月24日标记为重复