我在从远程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中失败的任何想法,以及我可以做些什么来解决这个问题?
答案 0 :(得分:0)
只需将hud userInteractionEnabled
设置为NO
,hud会将触摸事件传递给其基础视图。