WedX - журнал о программировании и компьютерных науках

Я скрываю свой AdBannerView, но все равно получаю ПРЕДУПРЕЖДЕНИЕ. В представлении баннера (0x9c75550) есть реклама

Я только что добавил ADBannerview в свое приложение. Я создаю AdBannerView в своем UIApplicationDelegate, чтобы иметь только один его экземпляр, и я делюсь им в другом viewController.

Все работает отлично, за исключением того, что я получаю предупреждающее сообщение: ADBannerView: ПРЕДУПРЕЖДЕНИЕ В представлении баннера (0x9c75550) есть реклама, но она может быть скрыта. Это сообщение печатается только один раз за просмотр баннера.

когда я открываю модальное представление (используя presentModalViewController) поверх представления, которое в данный момент отображает ADBannerview. Перед открытием модального представления я использую следующий код, чтобы скрыть ADBannerview:

- (void)viewWillDisappear:(BOOL)animated
{
    ADBannerView *bannerView = [ (ScoreBoardAppDelegate*)[[UIApplication sharedApplication] delegate] adBanner];
    [self hideBanner:bannerView];
    [super viewWillDisappear:animated];
}

- (void)hideBanner:(ADBannerView*) adBanner {
    NSLog(@"%s called", __FUNCTION__);

    // Grow the tableview to occupy space left by banner, it's the size of the parent view
    CGFloat fullViewHeight = self.tbView.frame.size.height;
    CGRect tableFrame = self.tv.frame;
    tableFrame.size.height = fullViewHeight;

    // Move the banner view offscreen
    CGRect bannerFrame = adBanner.frame;

    CGRect screenBounds = [[UIScreen mainScreen] bounds];
    bannerFrame.origin = CGPointMake(CGRectGetMinX(screenBounds), CGRectGetMaxY(screenBounds));

    self.tv.frame = tableFrame;
    adBanner.frame = bannerFrame;
}

Я не понимаю, что делать, чтобы не было этого предупреждающего сообщения. Кажется, что ADBannerView успешно скрыт (за кадром) перед отображением модального представления.

Возможно, я что-то пропустил, но я этого не вижу. Спасибо за вашу помощь,

Себастьян.


Ответы:


1

Себастьен, я надеюсь, что вы отошли от этого, так как вопрос оставался без ответа в течение стольких месяцев. Недавно я добавил поддержку iAd и обнаружил, что это предупреждение тоже довольно раздражает. Одна из тонкостей совместного использования рекламного баннера заключается в том, что если вы хотите показать его в своем начальном контроллере представления, вы должны выполнить большую часть настройки в этом контроллере представления, а не в делегате приложения.

Это метод viewWillAppear: в моем начальном контроллере представления:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    if (!SharedAdBannerView) {
        // in my app, the ad banner is the bottom-most thing on screen
        CGRect startingFrame = CGRectMake(0.0, self.view.frame.origin.y + self.view.frame.size.height, 320.0, 50.0);
        adBanner = [[ADBannerView alloc] initWithFrame:startingFrame];

        // Set the autoresizing mask so that the banner is pinned to the bottom
        adBanner.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleTopMargin;

        // Since we support all orientations, support portrait and landscape content sizes.
        // If you only supported landscape or portrait, you could remove the other from this set
        adBanner.requiredContentSizeIdentifiers = [NSSet setWithObjects:ADBannerContentSizeIdentifierPortrait, nil];
        adBanner.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;

        adBanner.delegate = self;
        [self.view addSubview:adBanner];
        SharedAdBannerView = adBanner; 
    } else {
        adBanner = SharedAdBannerView;
}

SharedAdBannerView — это макрос, определенный в TN2286, и он использует переменную экземпляра, определенную в делегате приложения (именно так он остается общим для всех представлений, отображающих iAd). Я также решил анимировать рекламный баннер за пределами экрана, прежде чем удалять его из иерархии представлений, поскольку одна сцена переходила в другую. Я читал документацию, в которой говорится, что всякий раз, когда рекламный баннер является частью иерархии представления, вы получите это сообщение — другими словами, скрытие представления баннера не способ предотвратить появление предупреждающего сообщения. Или другими словами, если достаточно скрыть рекламный баннер, то у меня это не сработало и не помогло в устранении неполадок. Я многому научился, когда наткнулся на TN2239, который предлагал этот совет в gdb:

 po [[self view] recursiveDescription];

Вы должны настроить объект, которому вы отправляете сообщение recursiveDescription, в зависимости от того, где вы разместили свою точку останова, но, вероятно, [самопросмотр] в порядке.

14.01.2012
Новые материалы

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]