I have a scroll view and I want to make it disappear whenever a pan is done. It works fine and on panning the scroll view disappears but the problem is now I can't scroll the contents.
[UIView animateWithDuration:0.2
delay:0.2
options: UIViewAnimationCurveLinear
animations:^{
slideView.frame=CGRectMake(268, 0, 500, 950);
curtain.frame=CGRectMake(0, 0, 268, 950);
curtain.backgroundColor=[[UIColor alloc]initWithRed:0 green:0 blue:0 alpha:0.6];
[self.view addSubview:slideView];
[self.view addSubview:curtain];
}
completion:^(BOOL finished){
NSLog(@"Done!");
}];
This is how I make my UIScrollView
appear (slideView
is a scroll view). And then I add a UIPanGestureRecognizer
. It all works fine but scrolling is disabled. (panImage
again hides my slideView
.) How do I make scrolling work?
[slideView addGestureRecognizer:panImage];
UIScrollView
has its own pan gesture recognizer, which controls scrolling. By adding another pan gesture recognizer, you are preventing the scroll view's own pan gesture recognizer from working.
There are a number of ways to deal with this, but it would be helpful if you could explain how the system is supposed to know when the user is trying to dismiss the scroll view, and when he is trying to scroll, since you want a pan gesture to do both.
For example, you could set the delegates of both gesture recognizers to allow the recognizers to operate simultaneously (by overriding the gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:
method). You could make each gesture recognizer require a different number of touches (by setting the minimumNumberOfTouches
and maximumNumberOfTouches
properties). You could use a UISwipeGestureRecognizer
to recognize the dismiss gesture. You could detect when the user tries to scroll past the left edge of the scroll view by overriding the scrollViewDidScroll:
method of the scroll view's delegate.