iAds в режиме прокрутки - PullRequest
0 голосов
/ 26 марта 2011

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

#pragma mark -
#pragma mark === Banner View Methods ===
#pragma mark -

- (void)createBannerView {

    Class cls = NSClassFromString(@"ADBannerView");
    if (cls) {
        ADBannerView *adView = [[cls alloc] initWithFrame:CGRectZero];
        adView.requiredContentSizeIdentifiers = [NSSet setWithObjects:ADBannerContentSizeIdentifierPortrait,
                                                 ADBannerContentSizeIdentifierLandscape, nil];

        // Set the current size based on device orientation
        adView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait;
        adView.delegate = self;

        adView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleRightMargin;

        // Set intital frame to be offscreen
        CGRect bannerFrame =adView.frame;
        bannerFrame.origin.y = self.view.frame.size.height;
        adView.frame = bannerFrame;

        self.bannerView = adView;

        [self.view addSubview:adView];
        [adView release];
    }
}

- (void)showBanner {

    CGFloat fullViewHeight = self.view.frame.size.height;
    CGRect tableFrame = self.tv.frame;
    CGRect bannerFrame = self.bannerView.frame;

    // Shrink the tableview to create space for banner
    tableFrame.size.height = fullViewHeight - bannerFrame.size.height;

    // Move banner onscreen
    bannerFrame.origin.y = fullViewHeight - bannerFrame.size.height; 

    [UIView beginAnimations:@"showBanner" context:NULL];
    self.tv.frame = tableFrame;
    self.bannerView.frame = bannerFrame;
    [UIView commitAnimations];
}

- (void)hideBanner {

    // Grow the tableview to occupy space left by banner
    CGFloat fullViewHeight = self.view.frame.size.height;
    CGRect tableFrame = self.tv.frame;
    tableFrame.size.height = fullViewHeight;

    // Move the banner view offscreen
    CGRect bannerFrame = self.bannerView.frame;
    bannerFrame.origin.y = fullViewHeight;

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

- (void)releaseBanner {

    if (self.bannerView) {
        bannerView.delegate = nil;
        self.bannerView = nil;
    }
}

- (void)changeBannerOrientation:(UIInterfaceOrientation)toOrientation {

    if (UIInterfaceOrientationIsLandscape(toOrientation)) {
        self.bannerView.currentContentSizeIdentifier = 
        ADBannerContentSizeIdentifierLandscape;
    }
    else {
        self.bannerView.currentContentSizeIdentifier = 
        ADBannerContentSizeIdentifierPortrait;
    }
}

#pragma mark -
#pragma mark === ADBannerViewDelegate Methods ===
#pragma mark -

- (void)bannerViewDidLoadAd:(ADBannerView *)banner {

    [self showBanner];
}

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {

    [self hideBanner];
}

1 Ответ

1 голос
/ 28 марта 2011
yes i got it you use addSubView which i think is wrong Add this Banner in last cell of a tableview or in a fotter of a table view if you are not use load more functionalty in you app
– tableView:viewForFooterInSection:
use that delegate method of table view UItableViewDelegate i think it helps you
– tableView:heightForFooterInSection:
add that method too to specify the height of footer of your table
add the calculate banner size code in
– tableView:heightForFooterInSection:
and add banner in – tableView:heightForFooterInSection:
...