Быстрое двойное нажатие действительно представляет собой одно действие пользователя, так как это желаемое поведение практически в любом приложении, которое использует управление гарнитурой для ввода. Это экономит разработчикам, которые вынуждены дебютировать, ставить в очередь и анализировать входящие события управления вручную и это хорошая вещь (tm)!
Для этого система будет вводить небольшое количество задержек, ожидая дальнейшего ввода пользователем. Для этого потребуется всего несколько сотен миллисекунд, после чего вы получите событие в своем коде.
Долгий, мучительный, но, надеюсь, полезный пример двойного пресс обнаружения:
- Пользователь нажимает на контроле гарнитуры
- Системы уведомление пресса, ждет освобождения
- пользователя управление релизы гарнитуры
- Системные уведомления освобождены, кнопка времени остается нажатой (длительное нажатие и короткое нажатие) и событие однократного нажатия очереди
- Система ждет 200 мс в случае, если это двойной пресс
- Это! Пользователь нажимает на контроле гарнитуры
- системы замечает прессу, ждет освобождения
- управление пользователем отпускает гарнитуры
- Системы преобразует в очереди одной пресс-конференции в двойную пресс-конференцию
- система ожидает 200мс в случае тройной -Нажмите
- нет пользовательский ввод в 200мсе
- системы не срабатывает дважды нажмите событие и очищает очередь
посмотреть, как задержка необходимо для обнаружения одиночных/двойных/тройных нажатий.
Когда событие достигает приложения оно будет иметь подтип, который описывает, какой тип нажмите пользователь сделал:
let rc = event!.subtype
print("received remote control \(rc.rawValue)") // 101 = pause, 100 = play
switch rc {
case .RemoteControlTogglePlayPause:
// ..
case .RemoteControlPlay:
// ..
case .RemoteControlPause:
// ..
default:break
}
Ответ на similar question через указал эти кодовые события целых чисел будет что-то подобное;
100 = play
101 = pause
103 = single mic click
104 = double mic click
105 = triple mic click
etc ...
Действия с двойным нажатием на многих платформах обрабатываются как однопользовательское событие. Имеет ли UIEventTypeRemoteControl какие-либо свойства, указывающие, сколько раз была нажата кнопка? –
Какая временная задержка «лаг» вы получаете? Между полсекунды и секунды? Несколько секунд? Можете ли вы предоставить образец проекта или воспроизводимый тестовый пример? – JAL