How to use UIGestureRecognizerDelegate?
Asked Answered
J

1

8

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.

Joiejoin answered 26/6, 2015 at 22:8 Comment(0)
J
14

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

Joiejoin answered 30/6, 2015 at 16:50 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.