iphone - 如何实现AdBannerview和ADBannerview委托(delegate)

标签 iphone cocoa iad

我在实现 ADBannerView 及其委托(delegate)协议(protocol)时遇到问题。

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

//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];

然后我为 ADBannerViewDelegate 创建了一个类,其中包含以下 .m

//
//  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

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

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}

并且委托(delegate)函数没有执行任何操作,因此根本没有 NSLog。显然没有捕获错误。

我被难住了。我想我在 View 和委托(delegate)中的 Adbanner View 调用的链接中遗漏了一些东西。不知道该怎么做或出了什么问题。

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

杰森

最佳答案

原因是您告诉 AdBannerView 您是其委托(delegate)人,但您从未将其放入实现文件中。您的实现文件应如下所示(请注意带有 @implmentation 的行):

//
//  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 的委托(delegate)(对其做出响应),但不能以其命名。

关于iphone - 如何实现AdBannerview和ADBannerview委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5135622/

相关文章:

iphone - 在 iPhone 上检测 NSString 中的 Unicode 字符

iphone - 如何将 NSDate 发送到 soap web 服务 - .net

ios - 除了一个 View Controller 外,在 iO 中支持纵向

objective-c - 在 NSMutableArray 中使用 insertObject 时发生崩溃

objective-c - Objective-C - 创建文本文件以在 Cocoa 中逐行读写

iphone - Instruments 总是为具有自动化功能的通用应用程序推出 iPad 模拟器,我如何强制它使用 iPhone 模拟器?

objective-c - 如何在 Cocoa 文档窗口中拥有多个代理图标?

ios - AdMob 中介与 iAd

iphone - xcode 4.3 - Storyboard - iAd 不断前进

iphone - 使用 iAd 框架在 3.1 上运行应用程序