问题
My Setup
I'm trying to replicate Google Now's card interface.
I have a UIView
which is a subview of (inside) a UIScrollView
. Both are controlled from the same UIViewController
. The UIView
has a UIPanGestureRecognizer
attached to it by the UIViewController
.
The UIScrollView
is used to scroll up and down. The UIPanGestureRecognizer
is used to swipe away the UIView
.
The Problem
I can't scroll when I'm touching the UIView
(the card)
The Question
How do I implement UIGestureRecognizerDelegate
to enable gestureRecognizer(_:shouldRecognizeSimultaneouslyWithGestureRecognizer:)
on the card so that it'll let the UIScrollView
scroll?
I've spent several hours trying to figure this out, and I would be incredibly thankful for help.
回答1:
In case anyone is wondering how to do this, here's the answer:
When you declare your class, add UIGestureRecognizerDelegate
after the class it subclasses. Here's what that looks like in my case:
class CardViewController: UIViewController, UIGestureRecognizerDelegate
Next, you add this function to the body of the UIViewController
:
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
And finally, you do this to the UIPanGestureRecognizer
:
somePanGestureRecognizer.delegate = self
来源:https://stackoverflow.com/questions/31082866/how-to-use-uigesturerecognizerdelegate