Note that there are some explanatory texts on larger screens.

plurals
  1. POiAd -- cannot click banner
    text
    copied!<p>I am creating a universal-app template.</p> <p>This template will need to support optional iAds, and optionally all orientations.</p> <p>I coded up a solution only to find a bizarre bug. in certain situations I was unable to click on the banner</p> <p>I then recoded another revision, tidied everything, and gutted out most of the code to reveal a minimal test case failure.</p> <p><a href="https://github.com/p-i-/iAdUniversalTemplate/commit/2c829d268a9452e1a054802e7ccb9cde5de17853" rel="noreferrer">https://github.com/p-i-/iAdUniversalTemplate/commit/2c829d268a9452e1a054802e7ccb9cde5de17853</a></p> <p>In this new code, only 3 views: window, uberview (the view controller's view), and the ad-banner</p> <p>So, the banner displays properly once it has been served, autorotation works fine... I have logged the frame and bounds for each, and everything is as it should be.</p> <p>But it is not responding to tap (well, click because I am in the simulator)</p> <p>What could possibly be wrong? I'm starting to suspect that in cutting the XIB out of the project and implementing the window and view controller from code, I have missed something out or wired something up back to front.</p> <p>Juicy code chunks:</p> <p><strong><em>AppDelegate.m</em></strong></p> <pre><code>- (BOOL) application: (UIApplication *) application didFinishLaunchingWithOptions: (NSDictionary *) launchOptions { NSLog(@"--&gt; ___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; } </code></pre> <p><strong><em>iAdVC.m</em></strong></p> <pre><code>- (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 } // = = = = = = = = = = = = = = = = = = = = = = = = = = </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload