Самый чистый способ представить UIKeyCommands из пользовательского UIControl
Я сейчас нахожусь в процессе написания кастома UIControl
и я должен быть в состоянии представить UIKeyCommands
от него. Теперь, способ, которым я в настоящее время реализовал это, выставляя BOOL
называется shouldShowKeyCommands
,
Когда это так, я показываю некоторые соответствующие команды:
- (void)moveRowDown:(id)sender {
[self.control setSelectedAtIndex:[self.control selectedIndex]+1];
}
- (void)moveRowUp:(id)sender {
[self.control setSelectedAtIndex:[self.control selectedIndex]-1];
}
- (void)selectAction:(id)sender {
[self.control performSelectedIndex];
}
- (NSArray *)keyCommands {
if (self.control.shouldShowKeyCommands) {
NSArray *commands = @[
[UIKeyCommand keyCommandWithInput:UIKeyInputDownArrow modifierFlags:UIKeyModifierCommand action:@selector(moveRowDown:) discoverabilityTitle:@"Go down one button"],
[UIKeyCommand keyCommandWithInput:UIKeyInputUpArrow modifierFlags:UIKeyModifierCommand action:@selector(moveRowUp:) discoverabilityTitle:@"Go up one button"],
[UIKeyCommand keyCommandWithInput:@"\r" modifierFlags:UIKeyModifierCommand action:@selector(selectAction:) discoverabilityTitle:@"Select action"]
];
return commands;
}
return @[];
}
Это работает как очарование, но на самом деле не кажется таким чистым. Одна вещь, которую я рассмотрел после проведения некоторых исследований, заключается в UIControl
UIViewController
потому что это позволило бы мне показать их из-под контроля. Есть ли другие хорошие варианты для решения этой проблемы?