How do I detect a pan gesture that starts outside my view? - ios

I have a UIViewController with a UIPanGestureRecognizer on its UIView, inside a UINavigationController. I need to detect vertical pans, even if they start in the navigation controller's navigation bar. At the moment, my handler method only gets called if the pan starts inside my controller's view.
How do I detect a pan gesture that starts outside my view?

Related

How to push a View from bottom using swiftUI

I am drag Image using a drag Gesture. When the gestures action ends a another View push from bottom of the screen to top of the screen.
Already am try NavigationLink(), But NavigationLink doesn't support inside the gesture action.
How to handle this use case ?

Swipe gesture not working on UIPageViewController when button clicked

I have created a UIPageViewController which I present on the screen.
The page view consists of 4 views. On top of each view I have added a UIButton over the top of the whole view to detect when someone clicks on a view.
Here is the view in interface builder. The whole of each coloured view has a button covering it:
When the user swipes I want the page view controller to go from one screen to the next.
Problem
When I go to make a swipe gesture, if I touch a button then it picks up the tap gesture for that button. So if I continue to slide my finger across the screen the page gesture doesn't work.
Goal
Even when I tap on a UIButton, if I don't lift my finger but instead make a swipe gesture, then I would like the UIPageViewController to turn page.
How can I override the touch gesture and instead make the slide gesture count and thus turn the page of the UIPageViewController.
Help much appreciated.

How to skip gestures for topmost view - iOS

I added a UIImageView as a subview to my UIView and then I added a transparent UIView to my view.
Now, the transparent view is the topmost view. But i would like to use Pan, Pinch, rotate gesture on my uiimageView.
The transparent view will have some text message to the user or some grid line to indicate the user to perform some tasks like image rotation, shrink and move etc..
For now, the transparent view is blocking all my gestures.
How can we make the gestures recognized by the UIImageView by overriding the topmost UIView gesture recogniser ?
[yourView setUserInteractionEnabled:NO] - this way all touch events on that view will be ignored and the next one in the view hierarchy will respond to them.

Swipe NavigationBar horizontally?

I want to create a UINavigationBar like the following:
I should be able to swipe the icons horizontally. If I swipe to the left I get this:
I cannot use a swipe gesture recognizer because the swipe event is only fired when the swipe ends. I need to capture each position of the swipe gesture to change the content below the navigation bar appropriately.
How can I do that?
What you describe is a pan gesture, not a swipe. You can add code that interprets the movement of the pan as if it's a swipe.
You can do it by customize your own navigation bar. Like inherit uiview and add swipe gesture in it to handle user's swipe. And you will still have to use UINavigationController but hide its navigation bar. Leave your "customized navigation bar" in the place.
And you can find lots code in github.
Hide default navigationbar. Create scrollview with all icons which you want to add in Navigation bar. Add that scrollview in window. So, you can display same in all screens of application.

After hiding navbar, touches aren't recognized where the navbar was

I have a UIPageViewController which has a root view controller and a data view controller (the xcode template).
I have two tap gesture recognizers on the main view in the data view controller.
I have an image view embedded in a scroll view which is embedded in the main view.
A single tap hides the navbar and a double tap zooms the image. I am unable to use either gesture recognizer where the navbar was after it is hidden.
Is there a way to enable the gesture recognizers in this space when the navbar is hidden or did I just miss a step?
It's like the root view controller has blocked that area out; the gesture recognizers work perfectly everywhere else. I can post code if needed.

Resources