简体   繁体   English

iAd显示但对点击没有反应

[英]iAd shows but doesn't react to taps

I am developing a game with SpriteKit in Swift. 我正在Swift中使用SpriteKit开发游戏。 I want to show the iAd on top on my game scene. 我想在游戏场景的顶部显示iAd

iAd shows, but when I tap it, it has no reaction. iAd显示,但是当我点击它时,它没有任何反应。 Nothing happens. 什么都没发生。

Here is my code: 这是我的代码:

import UIKit

import SpriteKit import iAd 导入SpriteKit导入iAd

class GameViewController: UIViewController, ADBannerViewDelegate, BackToMenuDelegate { 类GameViewController:UIViewController,ADBannerViewDelegate,BackToMenuDelegate {

var bannerView:ADBannerView =  ADBannerView()
var currentLevel:Int!

override func viewDidLoad() {
    super.viewDidLoad()
    // Configure the view.
    let skView = self.view as SKView
    skView.multipleTouchEnabled = false

    /* Set the scale mode to scale to fit the window */
    let gameScene = GameScene(size:skView.bounds.size)
    gameScene.scaleMode = .AspectFill
    gameScene.currentLevel = currentLevel
    gameScene.gameViewController = self
    skView.presentScene(gameScene)
}

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
}

override func shouldAutorotate() -> Bool {
    return false
}

override func supportedInterfaceOrientations() -> Int {
    if UIDevice.currentDevice().userInterfaceIdiom == .Phone {
        return Int(UIInterfaceOrientationMask.AllButUpsideDown.rawValue)
    } else {
        return Int(UIInterfaceOrientationMask.All.rawValue)
    }
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Release any cached data, images, etc that aren't in use.
}

override func prefersStatusBarHidden() -> Bool {
    return true
}

func bannerViewDidLoadAd(banner: ADBannerView!) {
    bannerView.hidden = false
}
func bannerViewActionShouldBegin(banner: ADBannerView!, willLeaveApplication willLeave: Bool) -> Bool {
    return willLeave
}
func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {
    bannerView.hidden = true
}
func loadAds(){
    bannerView.delegate = self
    bannerView.hidden = true

    var adRect = CGRectZero
    let contentFrame = self.view.bounds
    adRect.size = bannerView.sizeThatFits(contentFrame.size)
    adRect.origin.y = 0
    bannerView.frame = adRect

    self.view.addSubview(bannerView)
}
func backToMenu(){
    self.navigationController!.popToRootViewControllerAnimated(true)
    let skView = self.view as SKView
    skView.presentScene(nil)
}

func shareScore(score:Int){
    var objectsToShare = [AnyObject]()
    let textToShare = "I just got \(score) points in BlockCracker! Check out this App!"
    objectsToShare.append(textToShare)
    if let myWebsite = NSURL(string: "http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=611627312&mt=8")
    {
        objectsToShare.append(myWebsite)
    }
    let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
    activityVC.excludedActivityTypes = [UIActivityTypeAirDrop, UIActivityTypeAddToReadingList, UIActivityTypeAddToReadingList,UIActivityTypeAssignToContact, UIActivityTypeCopyToPasteboard,UIActivityTypePostToFlickr,UIActivityTypePostToVimeo,UIActivityTypeMail,UIActivityTypeMessage]
    self.presentViewController(activityVC, animated: true, completion: nil)

}
override func viewDidDisappear(animated: Bool) {
    super.viewDidDisappear(animated)

}

} }

Finally found the problem. 终于发现了问题。 Just here in func bannerViewActionShouldBegin(banner: ADBannerView!, willLeaveApplication willLeave: Bool) -> Bool { return willLeave } which willLeave default false! 就在这里func bannerViewActionShouldBegin(banner: ADBannerView!, willLeaveApplication willLeave: Bool) -> Bool { return willLeave }willLeave默认为false! Just change to return true value.Now everything goes fine! 只需更改即可返回真实值。现在一切正常!

I believe the problem is that your banner view has zero frame (ie CGRect.zeroRect ) and therefore no clickable area. 我认为问题在于您的横幅视图的框架为零(即CGRect.zeroRect ),因此没有可点击区域。 You have to set an appropriate frame; 您必须设置适当的框架; and sizeThatFits: will help you get the banner frame sized appropriately for the current window. sizeThatFits:将帮助您获得适合当前窗口的横幅框架大小。 (Code adapted to Swift from this Obj-C answer.) (此Obj-C答案的代码适用于Swift。)

func loadAds(){
    bannerView.delegate = self
    bannerView.hidden = true

    var adRect = CGRectZero
    let contentFrame = self.view.bounds
    adRect.size = bannerView.sizeThatFits(contentFrame.size)
    // adRect.origin.y = CGRectGetHeight(contentFrame) - CGRectGetHeight(adRect) <--bottom of screen
    adRect.origin.y = 0 // <-- top of screen
    bannerView.frame = adRect

    view.addSubview(bannerView)
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM