如何在iPhone(iOS)上的硬件键盘上检测键盘事件

hoc*_*ker 3 iphone objective-c keyboard-events ios

我有一个带有登录页面的应用程序,该页面包含三个不同随机字符的字段.当用户离开最后一个字段时,软键盘消失,用户可以触摸屏幕上的"登录"按钮.

当连接了硬件键盘(蓝牙或物理)时,我希望能够点击"输入".但是因为用户不在某个字段中,所以我看不到如何检测被按下的键.

有人会就哪个班级处理重要新闻事件提出建议吗?据推测,我可以使用一个代表来接收这些代理但我通过SDK搜索没有找到任何内容.

谢谢

Pat*_*pel 15

对于iOS 7.0或更高版本,您可以从任何UIResponder返回keyCommands属性的UIKeyCommands,例如UIViewController:

Objective-C的

// In a view or view controller subclass:
- (BOOL)canBecomeFirstResponder
{
    return YES;
}

- (NSArray *)keyCommands
{
    return @[ [UIKeyCommand keyCommandWithInput:@"\r" modifierFlags:0 action:@selector(enterPressed)] ];
}

- (void)enterPressed
{
    NSLog(@"Enter pressed");
}
Run Code Online (Sandbox Code Playgroud)

迅速

// In a UIView/UIViewController subclass:
override func canBecomeFirstResponder() -> Bool {
    return true
}

override var keyCommands: [UIKeyCommand]? {
    return [ UIKeyCommand(input: "\r", modifierFlags: [], action: #selector(enterPressed)) ]
}

@objc func enterPressed() {
    print("Enter pressed")
}
Run Code Online (Sandbox Code Playgroud)