检测并忽略 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
当您删除横幅时。使用此解决方案,您不必使用任何手势识别器。
我有一个首先显示菜单屏幕的 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
当您删除横幅时。使用此解决方案,您不必使用任何手势识别器。