5

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

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

- (BOOL)canBecomeFirstResponder {
    return YES;
}

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

但是,我希望关键命令是⌘</kbd>+e, or

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

这仍然有效,有点。第一次按就不行了⌘</kbd>+e, but it will work like a charm after that. Why does that happen and how can I fix it?

4

1 回答 1

13

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

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

然后,当用户点击⌘</kbd>+e, it'll be the second invocation and it'll register fine.

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

于 2015-03-02T07:59:58.260 回答