15

UIKeyCommand有人知道如何在 iOS 7 上检测“删除”键吗?

4

3 回答 3

29

当人们在使用 Swift 时遇到问题时,我认为 Objective C 和 Swift 中的一个小而完整的示例可能是一个很好的答案。

请注意,Swift 没有\b用于退格的转义字符,因此您需要使用简单的 Unicode 标量值转义序列\u{8}. 这映射到与Objective C 中的退格符相同的老式ASCII 控制字符编号 8(“control-H”,或插入符号中的 ^H)。\b

这是一个捕获退格的 Objective C 视图控制器实现:

#import "ViewController.h"

@implementation ViewController

// The View Controller must be able to become a first responder to register
// key presses.
- (BOOL)canBecomeFirstResponder {
    return YES;
}

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

- (void)backspacePressed {
    NSLog(@"Backspace key was pressed");
}

@end

这是 Swift 中等效的视图控制器:

import UIKit

class ViewController: UIViewController {

    override var canBecomeFirstResponder: Bool {
        return true;
    }

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

    @objc func backspacePressed() {
        NSLog("Backspace key was pressed")
    }

}
于 2014-12-22T18:44:08.200 回答
18

真的很简单 - 需要寻找退格符“\b”

于 2014-02-27T13:22:16.327 回答
-2

您可以随时尝试 UIKeyInput。https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIKeyInput_Protocol/index.html#//apple_ref/occ/intfm/UIKeyInput/deleteBackward

函数应该是

- (void)deleteBackward

于 2014-12-22T19:07:29.740 回答