Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在UIViewController中处理键盘快捷键_Ios_Objective C_Keyboard - Fatal编程技术网

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

Ios 如何在UIViewController中处理键盘快捷键,ios,objective-c,keyboard,Ios,Objective C,Keyboard,我正在尝试向uiextfield或UITextView上没有UITextField的UITextField>控制器添加一个可与外部蓝牙键盘一起使用的键盘快捷键。到目前为止,我尝试了以下方法,但没有成功 - (BOOL)canBecomeFirstResponder { return YES; } - (NSArray *)keyCommands { return @[ [UIKeyCommand keyCommandWithInput:@"e" mod

我正在尝试向
uiextfield
UITextView
上没有
UITextField的
UITextField>控制器添加一个可与外部蓝牙键盘一起使用的键盘快捷键。到目前为止,我尝试了以下方法,但没有成功

- (BOOL)canBecomeFirstResponder {
    return YES;
}

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

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

我也无意中想出了一个变通办法,但对我来说并不奏效。你知道如何处理UIViewController中没有文本字段的快捷方式吗?

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

- (BOOL)canBecomeFirstResponder {
    return YES;
}

- (NSArray<UIKeyCommand *>*)keyCommands {
    return @[
//example shortcut CTRL+Cmnd+1
             [UIKeyCommand keyCommandWithInput:@"1" modifierFlags:UIKeyModifierCommand | UIKeyModifierControl action:@selector(pressed:)]
];
        }
-(BOOL)可以成为第一响应者{
返回YES;
}
-(NSArray*)键命令{
返回@[
//快捷键CTRL+Cmnd+1示例
[UIKeyCommand KEYCOMMAND WITH INPUT:@“1”修改器标签:UIKEYMODIFERCOMMAND | UIKEYMODIFERCONTROL操作:@选择器(按下:)]
];
}
添加所需的选择器(在我的情况下为“按下”)

设置ViewController视图类-您的子类


结果—“2015-11-30 17:34:28.815项目名称[5204:2899520]1”

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


UIViewController
现在有一个简单的方法叫
-addKeyCommand:
,所以只要用这个方法把你的命令添加到你的视图控制器上,你就可以开始了。

你的iOS设备使用外部键盘吗?是的,完全正确。这是用于使用外部蓝牙键盘的。谢谢。我试过了。在UIViewController上“激活”按键命令不起作用。
becomeFirstResponder
仅对UITextView/字段有效。