handling different gestures on different UIViews in same point - ios

I have two views in the same location on screen.
The top view should handle pan gesture and the bottom should handle TouchUpInside.
I'm only getting the panning gesture event and not the TouchUpInside event.
I read about Hit-testing so i understand what is happening but is there a way to make the event pass to both the views?
Thanks

Related

Gesture Recognisers and Touch Began for a View in Swift

I have a View. In that view I added a gestureRecogniser for Pan,Rotate and Pinch. Recogniser takes small amount of time to detect it as a Gesture. But When I add touchesBegan function It detects the touch when I touch the finger to the screen without any delay. Any suggestion to Solve. I need GestureRecogniser for Pinch and Rotate the View. For Panning I need to use TouchesBegan function. How can i Keep both those things in a View

UIPageViewController: Swipe registration

I would like to achieve an animation when swiping from page to page on a UIPageViewController. I would like this animation to be linked to a UISwipeGestureRecognizer.
My question is: can I calculate a beginning and end of a swipe gesture and relatively execute an CGAffineTransform?
So I during the swipe, I want to transform a view in the direction of the swipe.
Who has any good tutorials or snippets I could use?
A couple of things.
Page view controllers are not built to use custom animations between pages. They are intended to use either a slide animation or a page curl animation.
Second, swipe gestures are single-shot, not continuous. There is no "relatively execute." When you do a swipe gesture, nothing happens, then the gesture fires and it's over. If you want an animation that's proportional to the user's finger position in the gesture you'll either need to do some specialized handling of a pan gesture recognizer or create your own custom gesture recognizer.

Cancel UIGestureRecognizer if subview contains gesture?

I was originally using the UITouch methods (touchesMoved: withEvent:) in order to detect the movement in a view. Due to the fact that it seemed not to update often enough I switched to using a UIPanGestureRecognizer (though this didn't actually fix the initial problem).
After using this the touches received for movements responded no matter what it was touching (different subviews) which I actually prefer. However now I have an issue with all the subviews which have movement. I need the gesture recognizer to still move the view even while touching subviews, however if the subview also moves in this direction (left/right) I need my recognizer to cancel.
It seems like gestureRecognizerShouldBegin: might be somewhere to start, but in my case, I cannot account for all subviews.
Is it possible to make pan gesture recognizer cancel if the subview (i.e. another pan recognizer, UISlider, horizontal scrollview, etc.) touched needs to be moved in left/right directions without having to account for each subview individually?

Disable scroll in UIScrollView while multi touching

In my program I use two fingers to pinch (zoom in and out), so sometimes when I want to pinch, app scrolls.
I would like to don't let scrolling in UIScrollView while two or more touches are on screen. How can I achieve that?
Try using UIGestureRecognizer.
In you case you must use a UITapGestureRecognizer, with 2 finger and one tap.
Attach the gesture on the table view.

How do I allow certain gestures to go through a superview to a view below it?

I have a view with three image views hangin' around. These image views respond to certain gestures. I want to allow a certain gesture (such as a swipe across the screen) to do an action to all of the imageviews (such as, say, delete them all).
The only way I can think of having the swipe gesture be recognized everywhere on the screen is by overlaying a clear superview that looks for swipe gestures. My problem; however, is that I don't know how to let the superview ignore all other gestures so I can still interact with the imageviews below. Is there an easier way to handle this problem?
Try adding the gesture to your view's window rather than the view:
[self.view.window addGestureRecognizer:gesture];

Resources