Самый чистый способ представить 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потому что это позволило бы мне показать их из-под контроля. Есть ли другие хорошие варианты для решения этой проблемы?

0 ответов

Другие вопросы по тегам