我有一個scrollView,它包含一個子視圖。 SubView添加了一個panGesture。使superview在某些情況下回應subView的UIPanGesture
我想什麼:
我需要pangesture到子視圖只工作如果搖攝垂直完成。如果水平平移發生,我希望scrollView響應平移而不是子視圖。我該如何實現這一目標
注意:Iam能夠在平移發生水平時以編程方式查找。
我有一個scrollView,它包含一個子視圖。 SubView添加了一個panGesture。使superview在某些情況下回應subView的UIPanGesture
我想什麼:
我需要pangesture到子視圖只工作如果搖攝垂直完成。如果水平平移發生,我希望scrollView響應平移而不是子視圖。我該如何實現這一目標
注意:Iam能夠在平移發生水平時以編程方式查找。
有幾種方法可以做到這一點:
superview
即可。但是,這會在兩種觀點之間產生強烈的聯繫,可能不應該這樣做。這將是脆弱的,許多人會認爲它的代碼味道。UIGestureRecognizer
並創建您自己的手勢識別器,只識別垂直移動。使用該代替UIPanGestureRecognizer
。選項3是最好的,但可能是最多的工作。您需要閱讀關於子類UIGestureRecognizer
:Apple Docs - UIGestureRecognizer的Apple文檔。
我也寫我自己的拖拽手勢識別,FlxDragGestureRecognizer.m,FlxDragGestureRecognizer.h(類似於泛手勢識別),您可以使用,如果你願意,或者看看拿到的如何是個好主意子類UIGestureRecognizer
。你可以使用這個類來識別只在特定方向移動的觸摸,否則它將失敗(這將允許其他手勢識別器識別器,如滾動視圖)。它還有很多其他自定義和收集的信息,如速度。
由於您已經知道如何檢測平移,因此您需要在您的超級視圖中實現委託協議,在您的子視圖中使用委託屬性並將您的超級視圖指定爲您的子視圖的委託。
當檢測到水平平移時,調用委託方法,當檢測到垂直平移時,在子視圖中實現你想要的。