iAd Banner View Делегат не вызывает методы - PullRequest
1 голос
/ 22 января 2012

У меня есть представление баннера iAd, все мои контракты запущены, и я реализовал делегат ADBannerView. Баннер должен исчезнуть без подключения к интернету, но он просто показывает белое поле, где должен быть контент. Я знаю, что у меня есть весь код правильно, я видел миллион учебников по этому вопросу. Поэтому я провел несколько тестов и обнаружил, что представление баннера даже не вызывает два метода для делегата! Вот код.

В файле .h:

#import <iAd/iAd.h>

@interface DetailViewController : ADBannerViewDelegate>
{
    ADBannerView *aBanner;
    BOOL bannerIsVisible;
}

@property (nonatomic, retain) IBOutlet ADBannerView *aBanner;
@property (nonatomic, assign) BOOL bannerIsVisible;

@end

в файле .m:

@implementation DetailViewController

@synthesize aBanner,bannerIsVisible;

//Show banner if can load ad.
-(void)bannerViewDidLoadAd:(ADBannerView *)banner
      { 
         if (!self.bannerIsVisible) { 
            [UIView beginAnimations:@"animateAdBannerOn" context:NULL]; banner.frame = CGRectOffset(banner.frame, 0, -banner.frame.size.height); 
            [UIView commitAnimations]; self.bannerIsVisible = YES; }
      }

    //Hide banner if can't load ad.
    -(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error
    { 
        if (self.bannerIsVisible) { 
            [UIView beginAnimations:@"animateAdBannerOff" context:NULL]; banner.frame = CGRectOffset(banner.frame, 0, banner.frame.size.height);           
            [UIView commitAnimations]; self.bannerIsVisible = NO; }
    }

Ответы [ 2 ]

3 голосов
/ 02 июня 2012

Вы должны установить делегат баннера для владельца файла.У меня была такая же проблема, и после того, как я ударился головой о стену, все стало так просто.

0 голосов
/ 19 мая 2017

Используйте код, показанный ниже, чтобы объявить своего собственного делегата

-(void)viewDidLoad {
  aBanner.delegate = self;
}
...