как заставить UIKeyInput делать повторные вызовы deleteBackwards
В настоящее время я использую UIKeyinput, но он посылает только одно событие delteBackward, даже если я долго удерживаю клавишу delete. Как я могу заставить его отправить мне несколько вызовов событий, когда я удерживаю delete в течение длительного времени?
2 ответа:
Нет простого способа заставить системную клавиатуру выполнять автоматическое повторение. Это оставляет вам два варианта:
- подделайте его, используя наложение на клавиатуре (см. комментарий @pho0)
- реализуйте пользовательскую клавиатуру, установите ее в качестве inputView для вашего вида или контроллера вида и реализуйте пользовательский протокол, поддерживающий автоматический повтор.
Решение 1 хорошо работает, если вам нужна только клавиша delete для автоматического повтора, но если вам нужны все клавиши для автоматического повтора наложения код становится таким же сложным, как и пользовательский вариант клавиатуры. (Наложение требует прямоугольника для каждой клавиши, так почему бы просто не заменить нижележащую клавиатуру).
Решение 2 предполагает определенный объем "авансовой" работы... Один из способов сделать это-определить класс cap клавиш (например, физический ключ) и класс раскладки клавиатуры.
Я реализовал оба решения в проектах, над которыми я работал, но в настоящее время я использую решение 2, так как я могу создать любую клавиатуру, которую мне нравится. В простом случае использовать никогда не нужно знать, что это не системная клавиатура. Для опытных пользователей они могут настроить клавиатуру так, как они считают нужным.
Как бы то ни было, я счел полезным, чтобы класс клавиатуры был немым; он просто сообщает, что клавиша перешла в состояние "вниз" или "вверх". Дополнительный класс выше, который решает, какие действия следует предпринять.
В некотором смысле, я знаю, что это не тот ответ, который вы искали, но я надеюсь, что это поможет, IDZ