【问题标题】:How to handle Keyboard Shortcut in UIViewController如何在 UIViewController 中处理键盘快捷键
【发布时间】:2016-02-05 14:20:35
【问题描述】:

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

- (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 中没有文本字段的快捷方式?

【问题讨论】:

  • 您的 iOS 设备是否使用外接键盘?
  • 是的,完全正确。这是用于使用外部蓝牙键盘

标签: ios objective-c keyboard


【解决方案1】:

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

- (BOOL)canBecomeFirstResponder {
    return YES;
}

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

添加所需的选择器(在我的例子中是“pressed:”)

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

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

【讨论】:

  • 谢谢。我试过了。它不能在 UIViewController 上“激活”keyCommands。 becomeFirstResponder 仅对 UITextView/Field 有影响。
【解决方案2】:

一个有点老的问题,但由于 Google 在搜索 UIViewController 的键盘快捷键时此链接很高,因此这是当前(2017 年 11 月)的答案:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 2011-12-01
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多