Szybkie podwójne naciśnięcie jest rzeczywiście działaniem pojedynczego użytkownika, ponieważ jest to pożądane zachowanie w prawie każdej aplikacji, która używa sterowania zestawem słuchawkowym do wprowadzania danych. To pozwala programistom na ręczne odrzucanie, kolejkowanie i analizowanie nadchodzących zdarzeń kontrolnych i jest dobrym pomysłem (tm)!
Aby to działało, system wprowadzi niewielką ilość opóźnienia, czekając na dalsze wprowadzanie danych przez użytkownika. Wypełnienie tego kodu powinno zająć kilkaset milisekund, po czym otrzymasz zdarzenie w swoim kodzie.
długa, bolesna, ale miejmy nadzieję, użyteczne przykładem podwójnej prasy wykrywania:
- Użytkownik naciska na kontroli słuchawkowego
- powiadomienia systemowe prasa, czeka na uwolnienie
- użytkownika kontrola komunikatów słuchawkowy
- Zwolnienie komunikatu systemowego, wykrycie, że przycisk czasu był wciśnięty (długie naciśnięcie względem krótkiego naciśnięcia) i kolejkowanie zdarzeń pojedynczego naciśnięcia
- System czeka 200 ms na wypadek dwukrotnego naciśnięcia
- To jest! Użytkownik naciska na kontroli słuchawkowego
- zawiadomień systemowe prasę, czeka na uwolnienie
- kontrola komunikatów użytkownik słuchawkowy
- system przelicza kolejce pojedynczego naciśnij zdarzenie w podwójnej prasowego imprezy
- System czeka 200ms w przypadku jest to potrójna -Press
- Nie wprowadzone przez użytkownika w ciągu 200ms
- systemu pożary dwukrotnie naciśnij zdarzenia i czyści kolejkę
zobaczyć jak opóźnienie niezbędne do wykrywania pojedynczej/podwójnej/potrójnej prasy.
Gdy zdarzenie osiąga swoją aplikację będzie miał podtyp który opisuje typ kliknij użytkownik wykonany:
let rc = event!.subtype
print("received remote control \(rc.rawValue)") // 101 = pause, 100 = play
switch rc {
case .RemoteControlTogglePlayPause:
// ..
case .RemoteControlPlay:
// ..
case .RemoteControlPause:
// ..
default:break
}
Odpowiedź na ciągu similar question wskazał tych liczb kodu zdarzenia będzie coś takiego;
100 = play
101 = pause
103 = single mic click
104 = double mic click
105 = triple mic click
etc ...
Podwójne naciśnięcia na wielu platformach są traktowane jako zdarzenie pojedynczego użytkownika. Czy UIEventTypeRemoteControl zawiera jakieś właściwości wskazujące ile razy przycisk został naciśnięty? –
Jakie opóźnienie "opóźnienie" dostajesz? Między pół sekundy i sekundy? Kilka sekund? Czy możesz podać przykładowy projekt lub powtarzalny przypadek testowy? – JAL