it's been a while since you came up with this topic. However, now I finally found the time to have a look at it.
Here's what I came up with.
I added a subview to the native view that fills the complete screen. Then I added an UIImageView, in a way that it is positioned halfway over a sparrow quad that has an event listener on it.
Just as you described, I did not receive any touch events from sparrow with this setup, no matter if I touched the image or the empty area. To receive them again, I tried changing the SPView-Code to '[event allTouches]' (as you said) - and that worked.
Now, however, Sparrow received the touches even if I touched the UIImageView -- which is bad, because it's not intuitive.
However, I found a way to make this work event with '[UIView touchesWithTarget:self]' (the way it is now).
You can create a custom subclass of UIView; I called it 'TouchThroughView'. It is an ordinary subclass of 'UIView' that overrides one method:
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
for (UIView *subview in self.subviews)
CGPoint innerPoint = CGPointMake(point.x - subview.frame.origin.x,
point.y - subview.frame.origin.y);
if ([subview pointInside:innerPoint withEvent:event]) return YES;
This changes the behavior of the UIView so that it works as a Sparrow-user would expect it: the empty part of the UIView does not receive touches, but the other parts do.
If you use this class for your UIView overlay, everything should work like expected.
(If, on the other side, you can live with all touches going through, just return 'NO' right away. BTW, in its current form, the class cannot work with rotated or scaled subviews -- but all normal content, like buttons, textfields, etc., should work just fine.)
I hope that helps!!