In modernen Benutzeroberflächen unter iOS ist es oft nützlich, mehrere UIGestureRecognizer in einer einzigen Ansicht zu implementieren, um ein realistischeres Verhalten der angezeigten Objekte zu ermöglichen, die die reale Welt modellieren.Mehrere UIGestureRecognizer gleichzeitig verwenden wie UIRotationGestureRecognizer & UIPanGestureRecognizer in Swift 3
Zum Beispiel möchten Sie vielleicht in der Lage sein, eine Ansicht um den Bildschirm zu ziehen, aber auch mit zwei Fingern zu drehen.
Die UIGestureRecognizerDelegate
bietet eine optionale Funktion shouldRecognizeSimultaneouslyWith
für diesen Zweck. true
die Rückkehr vermeidet nur eine Geste Effekt zu einer Zeit mit:
// MARK: - UIGestureRecognizerDelegate
extension GestureController: UIGestureRecognizerDelegate {
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
}
Wenn jedoch mehrere Gesten recognisers aktiv sind, vor allem UIRotationGestureRecognizer
kann es frustrierend sein, unerwartet ständig als die Handler sie überschreiben verhalten um die Ansicht zu finden.
Wie können mehrere Gestenerkenner implementiert werden, um ein reibungsloses Verhalten zu gewährleisten?