2015-01-07 10 views
0

, 내가하는 .m 파일에 .H 파일내 iOS 앱에서 UIViewController에서 ADBannerView를 제거하는 방법은 무엇입니까? 내 응용 프로그램에서

@property (strong, nonatomic) ADBannerView *adBannerView; 

코드

하여 UIViewControllerADBannerView을 추가했다에게

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.adBannerView = [[ADBannerView alloc] initWithFrame:CGRectMake(0, 518, 320, 50);]; 
    [self.view addSubview:self.adBannerView]; 
} 

#pragma mark - 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 { 
    NSLog(@"banner action should begin"); 
    return YES; 
} 

- (void)bannerViewWillLoadAd:(ADBannerView *)banner { 
    NSLog(@"banner will loaded"); 
} 

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

내 응용 프로그램은 일반적으로, 그것은 표시 할 수 있습니다 ADBannerView. 하지만 이제 UIViewController에서 ADBannerView을 제거한 다음 ADBannerView에 대한 모든 코드 줄을 제거했습니다. 내 응용 프로그램을 구축 할 수 있지만, 그것은 실행할 수 없습니다, 오류 MSG는 다음과 같습니다

Could not instantiate class named ADBannerView 

이 나를 ADBannerView를 제거 도와주세요. 고맙습니다. 당신은 스토리 보드에 ADBannerView를 추가하면

+0

당신은 스토리 보드를 사용하고 있습니까? – nburk

+0

업데이트 된 답변을 참조하십시오. –

답변

0
- (void)bannerViewDidLoadAd:(ADBannerView *)banner{ 
if (!bannerIsVisible){ 
    //LOG_TYPE(@"AD show"); 
    [UIView beginAnimations:@"animateAdBannerOn" context:NULL]; 
    // banner is invisible now and moved out of the screen on 50 px 
    //   banner.frame = CGRectOffset(banner.frame, 0, -50); 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){ 
     if (IS_IPHONE_5) { 
      //LOG_TYPE(@"view height: %f",self.view.bounds.size.height); 
      self.adView.frame = CGRectMake(0,568-49-50, self.view.frame.size.width, 50); 
     } 
     else{ 
      //LOG_TYPE(@"view height: %f",self.view.bounds.size.height); 
      self.adView.frame = CGRectMake(0,480-49-50, self.view.frame.size.width, 50); 
     } 
    } 
    else{ 
     self.adView.frame = CGRectMake(0,1024-56-50, self.view.frame.size.width, 50); 
    } 
    [UIView commitAnimations]; 
    bannerIsVisible = YES; 
    [self performSelector:@selector(hideAD) withObject:nil afterDelay:6]; 
} 
} 

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{ 
if (bannerIsVisible){ 
    //LOG_TYPE(@"AD error"); 
    [UIView beginAnimations:@"animateAdBannerOff" context:NULL]; 
    // banner is visible and we move it out of the screen, due to connection issue 
//  banner.frame = CGRectOffset(banner.frame, 0, 50); 
    bannerIsVisible = NO; 
    [self performSelector:@selector(hideAD) withObject:nil afterDelay:0]; 
    //  [self performSelector:@selector(hideAD) withObject:nil afterDelay:5]; 
} 
} 

- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave{ 
//LOG_TYPE(@"Banner view is beginning an ad action"); 
BOOL shouldExecuteAction = YES; 
if (!willLeave && shouldExecuteAction){ 
    // stop all interactive processes in the app 
    // [video pause]; 
    // [audio pause]; 
} 
return shouldExecuteAction; 
} 

- (void)bannerViewActionDidFinish:(ADBannerView *)banner{ 
// resume everything you've stopped 
// [video resume]; 
// [audio resume]; 
} 

- (void)hideAD{ 
//LOG_TYPE(@"Hide AD"); 
[UIView beginAnimations:@"animateAdBannerOff" context:NULL]; 
// banner is visible and we move it out of the screen, due to connection issue 
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){ 
    if (IS_IPHONE_5) { 
     //LOG_TYPE(@"view height: %f",self.view.bounds.size.height); 
     self.adView.frame = CGRectMake(0,568-49+50, self.view.frame.size.width, 50); 
    } 
    else{ 
     //LOG_TYPE(@"view height: %f",self.view.bounds.size.height); 
     self.adView.frame = CGRectMake(0,480-49+50, self.view.frame.size.width, 50); 
    } 
} 
else{ 
    self.adView.frame = CGRectMake(0,1024-56+50, self.view.frame.size.width, 50); 
} 
[UIView commitAnimations]; 
bannerIsVisible = NO; 

[self performSelector:@selector(bannerViewDidLoadAd:) withObject:self.adView afterDelay:60]; 
} 


-(void)viewDidLoad{ 
... 
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){ 
    if (IS_IPHONE_5) { 
     self.adView = [[ADBannerView alloc] initWithFrame:CGRectMake(0,568-49-50, self.view.frame.size.width, 50)]; 
    } 
    else{ 
     self.adView = [[ADBannerView alloc] initWithFrame:CGRectMake(0,480-49-50, self.view.frame.size.width, 50)]; 
    } 
} 
else{ 
    self.adView = [[ADBannerView alloc] initWithFrame:CGRectMake(0,1024-56-50, self.view.frame.size.width, 50)]; 
} 
[self.view addSubview:self.adView]; 
self.adView.delegate=self; 
bannerIsVisible=NO; 
self.adView.backgroundColor = [UIColor clearColor]; 
.... 
} 
+0

질문은 프로젝트에서 배너를 제거하고 켜거나 끄지 않고 움직이는 것이 아닙니다. – ravron

+0

먼저 viewDidLoad에 개체를 만들고 AdBannerView의 IBOutlet을 가져 가지 마십시오. 다음 것은 시도해야합니다 [self.adView removeFromSuperView]; . 그러면 광고가 삭제됩니다. –

+0

네, removeFromSuperView가 아니라 프로젝트에서 ADBannerView를 제거하고 싶습니다. – Bentley

0

다음 ADBannerView의 IBoutletdelegate를 제거합니다. ADBannerView

enter image description here

아래 그림의

브레이크 연결은 스토리 보드에서 ADBannerView를 제거하고 위의 코드는 완벽합니다.

다음과 같은 오류가 발생합니다.

enter image description here

+0

예, 오류는 사용자 오류와 동일합니다. 하지만 ADBannerView를 스토리 보드에 추가하지 않고 코드별로 추가합니다. 그런 다음 ADBannerView에 대한 모든 코드 줄을 제거하고 오류가 발생합니다. – Bentley

+0

파생 데이터를 제거하고 프로젝트를 정리하십시오. 프로젝트를 실행 한 후 잘 작동하고있을 수 있습니다. –

+0

파생 데이터 및 정리 프로젝트를 제거했지만 여전히 오류가 발생했습니다. – Bentley

-1
[self.adView removeFromSuperView];