Определить ключ удаления с помощью UIKeyCommand

Кто-нибудь знает, как обнаружить "удалить" ключ с помощью UIKeyCommand на iOS 7?

4 ответа

Решение

На самом деле все просто - нужно искать символ возврата "\b"

Поскольку у людей возникли проблемы со Swift, я подумал, что небольшой, полный пример в Objective C и Swift может быть хорошим ответом.

Обратите внимание, что Swift не имеет \b escape-символ для возврата, поэтому вам нужно использовать простую скалярную последовательность ESC \u{8}, Это соответствует тому же самому управляющему символу ASCII старой школы № 8 ("control-H" или ^H в обозначении каретки) для возврата на \b делает в цель C.

Вот реализация контроллера представления Objective C, которая ловит backspace:

#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")
    }

}

Начиная с iOS 15 естьUIKeyCommand.inputDeleteконстанта , которая работает:

      UIKeyCommand(title: "Delete Widget",
             action: #selector(WidgetViewController.deleteWidget(_:)),
             input: UIKeyCommand.inputDelete)

Вы всегда можете попробовать UIKeyInput. https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIKeyInput_Protocol/index.html

Функция должна быть

- (void)deleteBackward

Другие вопросы по тегам