检测并忽略 iAd 横幅上的触摸

Detect and ignore touches on iAd banners

我有一个首先显示菜单屏幕的 Sprite Kit 游戏。当您点击屏幕上的任意位置时,游戏就会开始。我正在展示 iAd。我遇到的问题是当用户点击 iAd 横幅查看添加时,GameScene 响应点击并开始游戏。理想情况下,我想检测触摸是在 iAd 横幅上,而不是在这种情况下启动游戏。

GameScene.m

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{

    // I dont want to start game if the touch was on the iAd Banner
    NSLog(@"Touch detected - Start the game....");

    [self startGame];
}

一个选项是检查位置。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{
    // get location
    UITouch *touch = [[event allTouches] anyObject];
    CGPoint location = [touch locationInView:touch.view];

    // check position
    if (CGRectContainsPoint(self.adBanner.frame, location) {
        // start game

    }
}

改用 UITapGestureRecognizer。检查是否 recognizer.view != adBanner

你试过缩小GameViewController中的SKView吗?

尝试制作

yourScene.size = CGSize(skView.bounds.size.width, skView.bounds.size.height-heightOfiAdBanner)

heightOfiAdBanner更改为iAd横幅的实际高度。然后将场景放置在您必须正确查看的位置(取决于您显示横幅的位置)。记得使用

yourScene.size = skView.bounds.size

当您删除横幅时。使用此解决方案,您不必使用任何手势识别器。