【问题标题】:How can I pass a touch to a button underneath another view?如何将触摸传递给另一个视图下方的按钮?
【发布时间】:2012-02-02 00:39:30
【问题描述】:

很简单的问题,但也许不是那么简单的答案:

我有一个清晰的视野,需要接受触摸。 在下面这是一个 UIButton,我也想接收触摸(由于我不会进入的原因,它必须在下面)。在按下按钮的情况下,我不希望清晰的视图接收到触摸。

我该怎么做?

编辑:

最终解决方案:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {


    for (UIView * view in self.subviews)
    {
        if ([view isKindOfClass:[UIButton class]]) {
            CGPoint pointInButton = [view convertPoint:point fromView:self];
            if ([view pointInside:pointInButton withEvent:event]) {
                return view;
            }
        }
    }
    return [super hitTest:point withEvent:event];
}

【问题讨论】:

  • 您是否尝试将 userInteractionEnabled 设置为 false 以获得清晰的视图?
  • @aroth 我也需要清晰的视野才能接受触摸。抱歉应该在问题中更具体(我现在将对其进行编辑)。

标签: iphone objective-c ios ipad uibutton


【解决方案1】:

为清晰视图提供对UIButton 的引用。覆盖清除视图的pointInside:withEvent: 方法。在您的覆盖中,检查该点是否在按钮内(通过将pointInside:withEvent: 发送到按钮)。如果该点在按钮中,则返回 NO。如果点在按钮之外,return [super pointInside:point withEvent:event]

【讨论】:

  • 谢谢!!这是一个很好的答案。我有点难以让它工作 - 你有没有机会说出我使用的代码为什么不起作用(我已将其添加到我的问题中)?
  • 啊哈...用这一行修复:CGPoint pointInButton = [view convertPoint:point fromView:self];谢谢:)
猜你喜欢
  • 1970-01-01
  • 2013-11-09
  • 1970-01-01
  • 2019-12-30
  • 1970-01-01
  • 2014-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多