在iOS上的現代用戶界面中,在單個視圖上實現多個UIGestureRecognizers通常很有用,以便爲模擬真實世界的顯示對象提供更真實的行爲。在Swift 3中同時使用多個UIGestureRecognizers,如UIRotationGestureRecognizer和UIPanGestureRecognizer
例如,您可能希望既可以在屏幕上拖動視圖,也可以使用兩個手指旋轉它。
UIGestureRecognizerDelegate
爲此提供了一個可選功能shouldRecognizeSimultaneouslyWith
。返回true
避免了僅一次一個具有手勢效果:
// MARK: - UIGestureRecognizerDelegate
extension GestureController: UIGestureRecognizerDelegate {
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
}
然而,當多個手勢識別器是活動的,特別是它UIRotationGestureRecognizer
可以是令人沮喪找到工作不正常的處理程序不斷互相覆蓋的圖。
如何實現多個手勢識別器以提供平滑行爲?