首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何实现AdBannerview和ADBannerview委托

如何实现AdBannerview和ADBannerview委托
EN

Stack Overflow用户
提问于 2011-02-28 04:15:01
回答 5查看 18.3K关注 0票数 6

我在实现ADBannerView和它的委托协议时遇到了麻烦。

我在我的视图类中实现了以下代码(也使视图符合ADBannerViewDelegate协议):

代码语言:javascript
复制
//add iAds
ADBannerView *adView = [[ADBannerView alloc] initWithFrame: CGRectMake(0, 318, 320, 50)];
adView.requiredContentSizeIdentifiers = [NSSet setWithObjects: ADBannerContentSizeIdentifierPortrait, ADBannerContentSizeIdentifierLandscape, nil];
adView.delegate = self; 
//adView.delegate = ADBannerViewDelegate;
[self.view addSubview: adView];

然后,我使用以下.m为ADBannerViewDelegate创建了一个类

代码语言:javascript
复制
//
//  ADBannerViewDelegate.m
//

#import "ADBannerViewDelegate.h"

@implementation ADBannerViewDelegate

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{
    NSLog(@"bannerview did not receive any banner due to %@", error);}

- (void)bannerViewActionDidFinish:(ADBannerView *)banner{NSLog(@"bannerview was selected");}

- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave{return willLeave;}

- (void)bannerViewDidLoadAd:(ADBannerView *)banner {NSLog(@"banner was loaded");}

@end

横幅最终会显示出来,但控制台会不断抛出以下类型的错误:

代码语言:javascript
复制
2011-02-27 15:00:54.108 app[31639:207] ADBannerView: Unhandled error (no delegate or delegate does not implement didFailToReceiveAdWithError:): Error Domain=ADErrorDomain Code=5 "The operation couldn’t be completed. Banner view is visible but does not have content" UserInfo=0x6356a40 {ADInternalErrorCode=5, NSLocalizedFailureReason=Banner view is visible but does not have content}

而委托函数没有做任何事情,所以根本就没有NSLog。显然没有捕捉到错误。

我被难住了。我猜我在视图和委托中的Adbanner视图调用的链接中遗漏了一些东西。不知道该怎么做,也不知道哪里出了问题。

有什么帮助吗?提前谢谢。

杰森

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-02-28 04:30:48

原因是你告诉AdBannerView你是它的代表,但你从来没有把它放在你的实现文件中。您的实现文件应如下所示(请注意包含@implmentation的行):

代码语言:javascript
复制
//
//  ADBannerViewDelegate.m
//

#import "ADBannerViewDelegate.h"

@implementation ADBannerViewDelegate<ADBannerViewDelegate>

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{
    NSLog(@"bannerview did not receive any banner due to %@", error);}

- (void)bannerViewActionDidFinish:(ADBannerView *)banner{NSLog(@"bannerview was selected");}

- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave{return willLeave;}

- (void)bannerViewDidLoadAd:(ADBannerView *)banner {NSLog(@"banner was loaded");}

@end

而且你也不应该把你的类命名为ADBannerViewDelegate.您的类应该是ADBannerView的委托(响应它),而不是根据它命名。

票数 9
EN

Stack Overflow用户

发布于 2011-02-28 04:24:57

我使用这个教程在我的应用程序中成功地集成了iAds:

http://www.raywenderlich.com/1371/how-to-integrate-iad-into-your-iphone-app

也许对你也有帮助。

票数 4
EN

Stack Overflow用户

发布于 2011-02-28 04:25:41

您不必尝试实现一个名为ADBannerViewDelegate的类,而是将这些方法放在视图类的实现中。

(如果您实际将视图类命名为"ADBannerViewDelegate",请不要这样做,因为这会让人感到困惑。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5135622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档