【问题标题】:What is the best method for creating a layer to catch touch events?创建图层以捕获触摸事件的最佳方法是什么?
【发布时间】:2010-08-18 10:12:27
【问题描述】:

我需要在主界面上方放置一个信息屏幕,但我需要它是 alpha'd 以便您可以看到它下面的界面。但是,当我在屏幕上触摸时,下面的界面仍在运行。

拦截触摸事件以使其不通过的最佳方法是什么?我尝试添加屏幕大小的自定义 UIButton,但这也不起作用:(

不幸的是,这里发布的代码太多了。视图长达数百行,但重要的是添加覆盖的子视图,如下所示:

InfoScreen *infoScreen = [[UIView alloc] initWithFrame:self.view.frame];
UIButton *invisibleButton = [UIButton buttonWithType:UIButtonTypeCustom];
invisibleButton.frame = self.view.frame;

[self.view addSubview:invisibleButton];
[self.view addSubview:infoScreen];

我在下面的视图中使用 touchesBegan、touchesMoved、touchesEnded 和 touchesCancelled。这可能是触摸通过的原因吗?

谢谢!

:-乔

【问题讨论】:

    标签: objective-c iphone cocoa-touch uiview uibutton


    【解决方案1】:

    如果您想阻止一切响应(例如对于基于时间的块),您可以使用

    [[UIApplication sharedApplication] beginIgnoringInteractionEvents];
    

    [[UIApplication sharedApplication] endIgnoringInteractionEvents];
    

    如果您需要触摸来取消此状态,它将不起作用;-)。在这种情况下,您的背景之上的透明 UIView 将完成工作。如果没有,请发布一些代码。

    【讨论】:

    • 不幸的是我不能这样做,因为我需要能够与我在顶部添加的视图进行交互。我尝试将 userInteractionEnabled 设置为 NO,但由于覆盖视图是子视图,因此交互也会被禁用。我将在上面发布一些代码。谢谢。附:我将重新审视旧问题,看看我是否可以标记一些已回答。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 2012-02-25
    相关资源
    最近更新 更多