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

时间:2015-10-20 20:38:00

标签: ios objective-c sprite-kit iad

我有一个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];
}

3 个答案:

答案 0 :(得分:3)

使用UITapGestureRecognizer代替。检查是否recognizer.view != adBanner

答案 1 :(得分:0)

您是否尝试过在GameViewController中缩小SKView?

尝试制作

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

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

yourScene.size = skView.bounds.size

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

答案 2 :(得分:-1)

一种选择是检查位置。

- (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

    }
}