2011-02-09 67 views
12

我有一个UIScrollView设置为有一个清晰的背景。部分scrollview确实有内容,但部分内容没有(所以它显示了其后的其他视图)。我希望能够点击UIScrollView和后面的MKMapView,但仅限于UIScrollView的透明部分。iPhone:单击视图后透明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

有趣,我只是有相反的问题。由于某种原因,我的接触正在传递。给我一分钟,我会看看我能否记得发生了什么事。 – jakev 2011-02-09 05:19:00

回答

7

我们所做的就是对UIScrollView进行子类化,并实现将责任下移到其下的视图的逻辑,如果触摸发生在透明区域内。

在我们的情况下,透明区域由120 contentOffset Y轴定义的,这意味着我们的内容开始120点的UIScrollView的开始的下方,并且代码看起来是这样的:

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

显然,这响应已经过时了,但希望这对任何寻求解决方案的人都有帮助。

3

基本上,由您来决定什么样的触摸事件你关心转发到另一个响应者。如果您只想转发所有触摸事件,只需删除您发布的代码中的if语句,以便下一个响应者将收到所有触摸事件。