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