0

在从远程 Web 服务请求数据时,我在导航栏中带有后退按钮的表格上显示 MBProgressHUD。

默认情况下,HUD 覆盖整个窗口,防止点击到达底层 UI 元素。我想更改此设置,以便导航栏接收点击,因此点击后退按钮可以取消请求并关闭 HUD。

在 MBProgressHUD 0.4 中,我通过更改 'initWithView:' 方法来做到这一点:

#if 1
    // SPC 2012-02-25 don't cover navigation bar (so user can cancel)
    CGRect _bounds = view.bounds;
    _bounds.origin.y += 64.0;
    _bounds.size.height -= 64.0;
    id me = [self initWithFrame:_bounds];
#else
    id me = [self initWithFrame:view.bounds];
#endif

这按预期工作。

我在 MBProgressHUD 0.5 中做了同样的改变:

#if 1
    // SPC 2013-03-15 don't cover navigation bar (so user can cancel)
    CGRect _bounds = view.bounds;
    _bounds.origin.y    += 64.0;
    _bounds.size.height -= 64.0;
    return [self initWithFrame:_bounds];
#else
    return [self initWithFrame:view.bounds];
#endif

但是HUD仍然覆盖了整个窗口。

我已经在这两个版本中逐步完成了代码,在修改后的代码之后它所做的只是调用“addSubview:”来将新创建的 HUD 添加到它的父视图中。

关于为什么它在 0.5 中失败的任何想法,以及我可以做些什么来解决这个问题?

4

1 回答 1

0

只需将 hud 设置userInteractionEnabledNO,hud 就会将触摸事件传递给其底层视图。

于 2013-12-11T06:35:02.660 回答