Ein schneller Doppeldruck ist in der Tat eine einzelne Benutzeraktion, da dies das gewünschte Verhalten in fast jeder Anwendung ist, die das Headset-Steuerelement für die Eingabe verwendet. Es erspart Entwicklern das manuelle Entprellen, Queue- ren und Parsen eingehender Steuerungsereignisse und ist ein Good Thing (tm)!
Damit dies funktioniert, führt das System eine kleine Verzögerung ein, während es auf weitere Benutzereingaben wartet. Es sollte nur ein paar hundert Millisekunden dauern, bis dies abgeschlossen ist. Danach erhalten Sie das Ereignis in Ihrem Code.
Ein langes, schmerzhaft, aber hoffentlich nützliches Beispiel für Doppel Presse-Erkennung:
- Benutzer auf Headset Steuerung unten
- -System drückt Hinweise Presse, wartet auf Freigabe
- Benutzermitteilungen Headset Steuer
- Systemmeldungen werden losgelassen, erkennt, dass die Zeittaste gedrückt wurde (langes Drücken vs. kurzes Drücken) und wartet einmaliges Drücken des Ereignisses
- System wartet 200 ms, wenn zweimal gedrückt wird
- Es ist! Benutzer drückt nach unten auf Headset Steuer
- System-Mitteilungen Presse, wartet auf Freigabe
- Benutzermitteilungen Headset Steuer
- -System Single-Presse-Event in doppelsträngige Presse-Event
- System wartet 200 ms bei der Warteschlange wandelt es ist ein Tripel -Drücken
- keine Benutzereingabe innerhalb 200ms
- Systems feuert Doppeldruckereignis und löscht die Warteschlange
sehen, wie die Verzögerung ist, notwendig für Einzel-/Doppel-/Dreifach-Druckerkennung.
Wenn das Ereignis der Anwendung erreicht wird es einen Subtyp haben, die, welche Art beschreibt der Benutzer aus klicken:
let rc = event!.subtype
print("received remote control \(rc.rawValue)") // 101 = pause, 100 = play
switch rc {
case .RemoteControlTogglePlayPause:
// ..
case .RemoteControlPlay:
// ..
case .RemoteControlPause:
// ..
default:break
}
Eine Antwort auf eine similar question diesen ganzen Zahlen Ereigniscode wies darauf hin, so etwas wie sein wird;
100 = play
101 = pause
103 = single mic click
104 = double mic click
105 = triple mic click
etc ...
Double-Press-Aktionen auf vielen Plattformen werden als Einzelbenutzerereignis behandelt. Enthält UIEventTypeRemoteControl Eigenschaften, die angeben, wie oft die Schaltfläche gedrückt wurde? –
Welche Art von Zeitverzögerung "Lag" bekommen Sie? Zwischen einer halben Sekunde und einer Sekunde? Ein paar Sekunden? Können Sie bitte ein Beispielprojekt oder einen reproduzierbaren Testfall bereitstellen? – JAL