检测并忽略触摸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]; } 

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

你有没有尝试使SKView在GameViewController中变小?

尝试制作

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

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

 yourScene.size = skView.bounds.size 

当你删除横幅。 有了这个解决scheme,你不必使用任何手势识别器。

一种select是检查位置。

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