【问题标题】:iPhone: Click view behind transparent UIScrollViewiPhone:点击透明 UIScrollView 后面的视图
【发布时间】:2011-02-09 05:15:03
【问题描述】:

我有一个设置为具有清晰背景的 UIScrollView。滚动视图的一部分确实有内容,但部分没有(因此它显示了它后面的其他视图)。我希望能够通过 UIScrollView 并点击到后面的 MKMapView,但仅限于 UIScrollView 的透明部分。

我发现了一些我很难理解如何开始工作的代码:

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

有人能帮我想想如何将触摸事件转发到另一个视图后面的视图吗?我可以从 UIViewController 调用 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 吗?

【问题讨论】:

  • 很有趣,我只是遇到了相反的问题。由于某种原因,我的触摸被传递了。给我一分钟,我看看我能不能记得发生了什么。
  • 好的,我的情况并不重要。你不明白什么?将触摸传递给下一个响应者似乎是合理的。
  • 我想我对下一个响应者一无所知。我将如何传递这一点?
  • 这就是您发布的代码的作用。你只需要编写方法来确定它是否应该被传递。

标签: iphone ios uiview uiscrollview uiresponder


【解决方案1】:

我们所做的是继承 UIScrollView 并实现逻辑,如果触摸发生在 transparent 区域内,则将责任传递给其下的视图。

在我们的例子中,透明区域由 Y 轴上 120 的 contentOffset 定义,这意味着我们的内容开始于 UIScrollView 起点下方 120 点,代码如下所示:

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

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

【讨论】:

    【解决方案2】:

    基本上,由您决定将哪些触摸事件转发给其他响应者。如果您只是想转发所有触摸事件,只需删除您发布的代码中的 if 语句,以便下一个响应者接收所有触摸事件。

    【讨论】:

      猜你喜欢
      • 2010-11-27
      • 1970-01-01
      • 1970-01-01
      • 2012-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多