I am creating a universal application template.
This template should support additional iAds and possibly all orientations.
I have encoded a solution just to find a fancy bug. in certain situations, I was not able to click on the banner
Then I transcoded another revision, tidied everything up and cut out most of the code to detect the failure of the minimum test.
https://github.com/pi-/iAdUniversalTemplate/commit/2c829d268a9452e1a054802e7ccb9cde5de17853
There are only 3 views in this new code: window, uberview (view controller view) and banner ad
So, the banner displays correctly after it is submitted, autorotation works fine ... I registered a frame and frames for each, and everything is as it should be.
But it doesn't respond to click (well, click because I'm in the simulator)
What could be wrong? I'm starting to suspect that by cutting out the XIB from the project and embedding the window and looking at the controller from the code, I missed something or moved something up and down.
Juicy code snippets:
AppDelegate.m
- (BOOL) application: (UIApplication *) application didFinishLaunchingWithOptions: (NSDictionary *) launchOptions { NSLog(@"--> ___PROJECTNAME___AppDelegate:didFinishLaunchingWithOptions..."); // FIXED: now entry in info.plist hides SB BEFORE launch [[UIApplication sharedApplication] setStatusBarHidden: (SHOW_SB ? NO : YES)]; CGRect appFrame = [UIScreen mainScreen].applicationFrame; // windowRect must start at 0, 0 // if (SHOW_SB == YES), appFrame will be '{{0, 20}, {320, 460}}' CGRect windowRect = CGRectMake(0, 0, appFrame.size.width, appFrame.size.height); self.window = [[[UIWindow alloc] initWithFrame: windowRect] autorelease]; self.viewController = [ [ [ ___PROJECTNAME___ViewController alloc ] init ] autorelease ]; [self.window setRootViewController: viewController]; // triggers loadView [self.window makeKeyAndVisible]; return YES; }
iAdVC.m
- (void) loadView { self.uberView = [[[UIView alloc] initWithFrame: [UIScreen mainScreen].applicationFrame] autorelease]; self.uberView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; self.uberView.autoresizesSubviews = YES; self.uberView.clipsToBounds = YES; //UIWindow * w = self.view.window; //w.clipsToBounds = YES; [self setView: uberView]; showingBanner = NO; adBannerView = nil; if (IADS_ENABLED) { NSString * P = ADBannerContentSizeIdentifierPortrait; NSString * L = ADBannerContentSizeIdentifierLandscape; self.adBannerView = [[[ADBannerView alloc] initWithFrame:CGRectZero] autorelease]; self.adBannerView.delegate = self; self.adBannerView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleTopMargin; self.adBannerView.requiredContentSizeIdentifiers = [NSSet setWithObjects: P, L, nil]; self.adBannerView.currentContentSizeIdentifier = UIInterfaceOrientationIsPortrait( self.interfaceOrientation ) ? P : L ; [uberView addSubview: adBannerView]; } UIWindow * w = [[UIApplication sharedApplication] keyWindow]; w.userInteractionEnabled = YES; self.uberView.userInteractionEnabled = YES; self.adBannerView.userInteractionEnabled = YES; w.clipsToBounds = YES; self.uberView.clipsToBounds = YES; self.adBannerView.clipsToBounds = YES; w.opaque = YES; self.uberView.opaque = YES; self.adBannerView.opaque = YES; } // - - - - - - - - - - - - - - - - - - - - - - - - - - #pragma mark Autorotate - (BOOL) shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation { return YES; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - (void) willRotateToInterfaceOrientation: (UIInterfaceOrientation) newOrientation duration: (NSTimeInterval) duration { bool isLandscape = UIInterfaceOrientationIsLandscape(newOrientation); self.adBannerView.currentContentSizeIdentifier = isLandscape ? ADBannerContentSizeIdentifierLandscape : ADBannerContentSizeIdentifierPortrait ; } #pragma mark Banner // - - - - - - - - - - - - - - - - - - - - - - - - - - - (void) bannerViewDidLoadAd: (ADBannerView *) banner { if (! showingBanner) { showingBanner = YES; // ... (optionally animate in) } } // - - - - - - - - - - - - - - - - - - - - - - - - - - - (void) bannerView: (ADBannerView *) banner didFailToReceiveAdWithError: (NSError *) error { NSLog(@"FAIL"); if (showingBanner) { showingBanner = NO; // ... (optionally animate out) } } // - - - - - - - - - - - - - - - - - - - - - - - - - - -(BOOL) bannerViewActionShouldBegin: (ADBannerView *) banner willLeaveApplication: (BOOL) willLeave { return YES; // doesnt get hit } // = = = = = = = = = = = = = = = = = = = = = = = = = =