Scrolling handles with UIView on top of UIScrollView, ScrollView wont Scroll

I want to detect touches in a UIScrollView that has a UIView on top. This UIView has buttons on it, so I cannot disable userInteractionEnabledin UIView.

Here is the hierarchy for a better understanding:

UIView (MainView: (0,0) 320x460)
. .UIScrollView (ScrollView: (0,0) 320x460)
. .UIView (OverlayView: (0,0) 320x250)
. . . .UIButton (button1: 50x50)
. . . .UIButton (button2: 50x50)
. . . .UIButton (button3: 50x50)

I can scroll when you touch OverlayView. But not from scratch OverlayView.

Any tips? Thank!

+3
source share
1 answer

Try adding an overlay view as a subset of the scroll and then refresh the overlay view frame as a scroll scroll.

Store original overlay frame in member variable during initialization

CGRect baseOverlayRect = overlayView.frame;

Scroll through the delegate method view.

- (void) scrollViewDidScroll:(UIScrollView *)scrollView {

    CGPoint overlayOrigin = CGPointMake(baseOverlayRect.origin.x, baseOverlayRect.origin.y + scrollView.contentOffset.y);
    CGRect newOverlayFrame = CGRectMake(overlayOrigin.x, overlayOrigin.y, baseOverlayRect.width, baseOverlayRect.height);
    overlayView.frame = newOverlayFrame;

}
0
source

All Articles