iAd Interstitial touch activates scene button. Swift

| | August 11, 2015

I implemented iAd interstitial into my GameOverScene in SpriteKit. For some reason when the interstitial pops up, If i touch the same location as where a button is, I am still able to hear the button click. If the user touches this button by accident and closes the interstitial the scene will become black and I can not see the game anymore. Is there anyway how to solve this problem.

This is my code.

class GameOverScene: SKScene, ADInterstitialAdDelegate{

var interstitialAd:ADInterstitialAd!
var interstitialAdView: UIView = UIView()
var closeButton = UIButton.buttonWithType(UIButtonType.System) as UIButton
var adBannerView = ADBannerView(frame: CGRect.zeroRect)

func loadInterstitialAd() {
    interstitialAd = ADInterstitialAd()
    interstitialAd.delegate = self
    scene?.paused = true

func interstitialAdWillLoad(interstitialAd: ADInterstitialAd!) {


func interstitialAdDidLoad(interstitialAd: ADInterstitialAd!) {
    closeButton.frame = CGRectMake(10, 10, 20, 20)
    closeButton.layer.cornerRadius = 10
    closeButton.setTitle("x", forState: .Normal)
    closeButton.setTitleColor(UIColor.blackColor(), forState: .Normal)
    closeButton.backgroundColor = UIColor.whiteColor()
    closeButton.layer.borderColor = UIColor.blackColor().CGColor
    closeButton.layer.borderWidth = 1
    closeButton.addTarget(self, action: "close:", forControlEvents: UIControlEvents.TouchDown)


    interstitialAdView = UIView()
    interstitialAdView.frame = self.view!.bounds

    println("called after inter ad loads its content ")

func interstitialAdActionDidFinish(interstitialAd: ADInterstitialAd!) {


func interstitialAdActionShouldBegin(interstitialAd: ADInterstitialAd!, willLeaveApplication willLeave: Bool) -> Bool {

    return true

func interstitialAd(interstitialAd: ADInterstitialAd!, didFailWithError error: NSError!) {
    println("failed to receive")



func interstitialAdDidUnload(interstitialAd: ADInterstitialAd!) {
    println("user clicked out of ad")

override init(size: CGSize) {
    super.init(size: size)

One Response to “iAd Interstitial touch activates scene button. Swift”

  1. try UIControlEvents.TouchUpInside vs. TouchDown
    A touch-up event in the control where the finger is inside the bounds of the control

Leave a Reply