AdColony + SVProgressHUD Conflict
Я испытываю странное поведение при интеграции библиотеки AdColony 2.2.4 с приложением, использующим SVProgressHUD. Если стандартный вызов конфигурации сделан в делегате приложения...
[AdColony configureWithAppID:kAdColonyAppID zoneIDs:@[kAdColonyZoneID] delegate:nil logging:true];
SVProgressHUD больше не появляется в приложении, вызывая
[SVProgressHUD showWithStatus@"Status..."];
Простое комментирование вызова configureCithAppID в AdColony приводит к нормальной работе SVProgressHUD. Кто-нибудь еще сталкивался с этим или нашел способ заставить их обоих работать в одном приложении?
3 ответа
Похоже, что код SVProgressHUD выполняет проверку в строке 436, которая не учитывает, что в существовании может быть несколько UIWindows, принадлежащих к уровню UIWindowLevelNormal. Следствием этого является то, что представление HUD добавляется в неправильное окно. Чтобы заставить SVProgressHUD работать, вы можете изменить цикл for, начинающийся в строке 436, следующим образом:
for (UIWindow *window in frontToBackWindows) {
if (window.keyWindow) {
[window addSubview:self.hudView];
break;
}
}
Пожалуйста, не стесняйтесь обращаться к нам (support@adcolony.com) с любыми дополнительными вопросами интеграции, которые могут у вас возникнуть.
Это работает для меня, я добавил структуру 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;
}
}
Так что работает,.. . Спасибо
Самый простой способ, который работал для меня, это
[[[UIApplication sharedApplication] keyWindow] addSubview:self. overlayView];
Это выполняет то же действие, что и принятый ответ.