Estoy creando una plantilla de aplicación universal.iAd: no se puede hacer clic en banner
Esta plantilla deberá admitir iAds opcionales y, opcionalmente, todas las orientaciones.
He codificado una solución solo para encontrar un error extraño. en ciertas situaciones no pude hacer clic en el banner
Luego grabé otra revisión, ordené todo y aniquilé la mayor parte del código para revelar un error mínimo en la prueba.
https://github.com/p-i-/iAdUniversalTemplate/commit/2c829d268a9452e1a054802e7ccb9cde5de17853
En este nuevo código, sólo 3 puntos de vista: Ventana, uberview (vista del controlador de vista), y el anuncio banner
Así, los banners se muestra correctamente una vez que se ha servido, autorrotación funciona bien ... He registrado el marco y los límites para cada uno, y todo está como debe ser.
Pero no está respondiendo a tocar (así, haga clic porque estoy en el simulador)
Qué podría estar mal? Estoy empezando a sospechar que al cortar el XIB del proyecto y al implementar la ventana y ver el controlador desde el código, me he perdido algo o he conectado algo de vuelta al frente.
trozos de código jugosas:
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
}
// = = = = = = = = = = = = = = = = = = = = = = = = = =
¿Ha intentado agregar el banner al centro de la ventana (alimentar el CGRect adecuado en initWithFrame), solo para asegurarse de que no esté oscurecido por alguna otra vista invisible que pueda estar agregando en otro lugar? – SVD