Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iPhone: Click view behind transparent UIScrollView

I have a UIScrollView that is set to have a clear background. Part of the scrollview does have content, but part does not (so it shows other views behind it). I would like to be able to click through the UIScrollView and to the MKMapView behind, but only for the transparent portion of the UIScrollView.

I have found some code which I am having a real hard time understanding how to get working:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    if (![self yourMethodThatDeterminesInterestingTouches:touches withEvent:event])
        [self.nextResponder touchesBegan:touches withEvent:event]; 
}

Could someone help me wrap my mind around how to forward a touch event to a view that is behind another view? Can I call - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event from a UIViewController?

like image 714
Nic Hubbard Avatar asked Feb 09 '11 05:02

Nic Hubbard


1 Answers

What we did was to subclass UIScrollView and implement logic that passes responsibility down to views under it, if the touch happens inside of the transparent area.

In our case the transparent area is defined by contentOffset of 120 on Y axis, meaning our content starts 120 points below the start of the UIScrollView, and the code looks like this:

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
    if (self.contentOffset.y < 0 && point.y < 0.0) {
        return NO;
    } else {
        return YES;
    }
}

Obviously this response is well past its prime but hopefully this is helpful to anyone searching for a solution.

like image 162
Stepan Mazurov Avatar answered Sep 28 '22 09:09

Stepan Mazurov