0

在将 AdColony 的 2.2.4 库与使用 SVProgressHUD 的应用程序集成时,我遇到了一些奇怪的行为。如果在应用程序委托中进行标准配置调用...

[AdColony configureWithAppID:kAdColonyAppID zoneIDs:@[kAdColonyZoneID] delegate:nil logging:true];

SVProgressHUD 不再通过调用在应用中弹出

[SVProgressHUD showWithStatus@"Status..."];

简单地注释掉 AdColony configureWithAppID 调用会导致 SVProgressHUD 再次正常运行。有没有其他人遇到过这种情况,或者找到一种方法让它们都在同一个应用程序中工作?

4

3 回答 3

3

看起来 SVProgressHUD 代码正在对第 436 行进行检查,但没有考虑到存在多个属于 UIWindowLevelNormal 级别的 UIWindows。这样做的结果是 HUD 视图被添加到了错误的窗口中。为了使 SVProgressHUD 工作,您可以修改从第 436 行开始的 for 循环,如下所示:

for (UIWindow *window in frontToBackWindows) {
    if (window.keyWindow) {
        [window addSubview:self.hudView];
        break;
    }
}

如果您有任何进一步的集成问题,请随时与我们联系 (support@adcolony.com)。

于 2014-02-19T18:33:54.157 回答
0

它对我有用,我已经添加了 adcolony 框架,所以没有显示 SVProgress hud 的成功消息:我评论了代码:

//        for (UIWindow *window in frontToBackWindows)
//            if (window.windowLevel == UIWindowLevelNormal) {
//                [window addSubview:self.overlayView];
//                break;
//            }

并替换为

for (UIWindow *window in frontToBackWindows) {
            if (window.keyWindow) {
                [window addSubview:self.hudView];
                break;
            }
        }

所以它有效,...谢谢

于 2014-07-04T05:13:39.730 回答
0

对我有用的最简单的方法是

[[[UIApplication sharedApplication] keyWindow] addSubview:self. overlayView];

这执行与接受的答案相同的操作。

于 2014-07-15T05:44:01.833 回答