如何在UIViewController中处理键盘快捷键

时间:2015-11-04 21:59:30

标签: ios objective-c keyboard

我正在尝试将用于外部蓝牙键盘的键盘快捷键添加到UIViewController,但没有UITextFieldUITextView。到目前为止,我尝试了以下但没有成功

- (BOOL)canBecomeFirstResponder {
    return YES;
}

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

- (void)handleShortcut:(id)sender
{
    NSLog(@"%s",__FUNCTION__);
}

我也偶然发现this post有一个解决方法,但它对我不起作用。任何想法如何处理UIViewController中没有文本字段的快捷方式?

2 个答案:

答案 0 :(得分:0)

创建UIView的子类。添加方法:

- (BOOL)canBecomeFirstResponder {
    return YES;
}

- (NSArray<UIKeyCommand *>*)keyCommands {
    return @[
//example shortcut CTRL+Cmnd+1
             [UIKeyCommand keyCommandWithInput:@"1" modifierFlags:UIKeyModifierCommand | UIKeyModifierControl action:@selector(pressed:)]
];
        }

添加所需的选择器(在我的情况下为“press:”)

设置ViewController视图类 - 您的子类。

结果 - “2015-11-30 17:34:28.815 ProjectName [5204:2899520] 1”

答案 1 :(得分:0)

一个稍微陈旧的问题,但由于Google在搜索UIViewController的键盘快捷键时此链接较高,这是当前(2017年11月)的答案:

UIViewController现在有一个名为-addKeyCommand:的简单方法,所以只需使用此方法将您的命令添加到视图控制器,就可以了。