In my app I have a RootPageViewController which contains the UIPageViewController and one or more DetailPageViewController with a UITableView as a childview.
DetailPageViewController
/
RootPageViewController - DetailPageViewController
\
DetailPageViewController
On top of every DetailPageViewController is a little space where it should be possible to swipe and get to the next DetailPageViewController.
-------------------
| |
| | -> UIPageViewController should respond to pan's
| |
|-------------------| --------------------------------------------
| CellContent |
|-------------------|
| CellContent |
|-------------------| -> UIPageViewController should disable UIPageViewController pan's
| CellContent |
|-------------------|
| ... |
In the iOS 7 weather app is a scrollview with the whole weak forecast who somehow overwrites or disables the the pan of the UIPageViewController.
How can I recreate such behavior ?
Sorry for the missing screenshots
I do it by subclassing the UIPageViewController, finding its UIScrollView (iterate self.subviews), and adding a new UIPanGestureRecognizer to that scrollView.
I set my subclassed UIPageViewController to be the delegate of that new UIPanGestureRegognizer. I then implement two delegate methods:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return NO;
}
and in
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
I decide if I want to "eat the event" (reply YES) or if I want the original UIPanGestureViewRecognizer of the UIScrollView to handle it (reply NO). So, the YES-reply means the UIPageViewController will not scroll to the next ViewController.
My solution in Swift:
let myview = UIView(frame: CGRect(x:0, y:0, width:320, height:320))
//dummy view that defines the area where the gesture works
self.view.addSubview(myview)
for x in self.pageViewController!.view.subviews
{ if x is UIScrollView
{ myview.addGestureRecognizer(x.panGestureRecognizer) }
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With