我有一个UIScrollView设置为具有清晰的背景。 scrollview的一部分确实有内容,但部分没有(因此它显示了其后的其他视图)。我希望能够点击UIScrollView和后面的MKMapView,但仅限于UIScrollView的透明部分。
我找到了一些代码,我很难理解如何开始工作:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
if (![self yourMethodThatDeterminesInterestingTouches:touches withEvent:event])
[self.nextResponder touchesBegan:touches withEvent:event];
}
有人可以帮助我解决如何将触摸事件转发到另一个视图后面的视图的问题吗?我可以调用 - (void)touchesBegan:(NSSet *)触及来自UIViewController的事件:(UIEvent *)事件吗?
答案 0 :(得分:9)
我们所做的是将UIScrollView子类化并实现将责任传递给其下的视图的逻辑,如果触摸发生在透明区域内。
在我们的例子中,透明区域由Y轴上的contentOffset 120定义,这意味着我们的内容在UIScrollView开头下方120点开始,代码如下所示:
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
if (self.contentOffset.y < 0 && point.y < 0.0) {
return NO;
} else {
return YES;
}
}
显然,这种反应已经过了很长时间,但希望这对任何寻求解决方案的人都有帮助。
答案 1 :(得分:3)
基本上,您需要确定要转发给其他响应者的触摸事件。如果您只想转发所有触摸事件,只需删除您发布的代码中的if
语句,以便下一个响应者将收到所有触摸事件。