UIKeyCommand с модификатором не будет распознан при первом вызове
Я поддерживаю сочетания клавиш в моем приложении iOS через обслуживание UIKeyCommand
экземпляры с моей точки зрения контроллера.
Следующее работает как талисман и вызывает вызываемый селектор при каждом нажатии 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, но после этого будет работать как шарм. Почему это происходит и как я могу это исправить?
1 ответ
Это известная ошибка. В качестве обходного пути вы можете зарегистрироваться, чтобы отвечать только на клавишу Command, передавая пустую строку и селектор, который ничего не делает:
[UIKeyCommand keyCommandWithInput:@""
modifierFlags:UIKeyModifierCommand
action:@selector(doNothing:)]
Затем, когда пользователь нажмет ⌘+e, это будет второй вызов, и он зарегистрируется нормально.
Более подробную информацию об ошибке можно найти здесь, на OpenRadar. Он был представлен 27 января 2015 года, а 24 февраля отмечен как дубликат.