弹出视图关闭按钮无法正常工作

时间:2015-04-16 01:06:31

标签: ios swift uibutton

我正在创建一个显示在模糊背景之上的弹出视图。它似乎工作正常,除了目前偶尔出现时,关闭按钮根本不起作用。这似乎经常发生在第二次使用。

这是我的代码:

override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent) {
    if motion == .MotionShake {
        println("Shake")
        if randomImageContainer.alpha == 0 {
            var randomIndex = Int(arc4random_uniform(UInt32(randomImages.count)))

            lightBlur = UIBlurEffect(style: UIBlurEffectStyle.Light)
            blurRandomView = UIVisualEffectView(effect: lightBlur)
            blurRandomView.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height)
            view.addSubview(blurRandomView)

            randomImageContainer.frame = CGRect(x: 0, y: 0, width: 264, height: 308)
            randomImageContainer.center.x = view.frame.width/2
            randomImageContainer.center.y = view.frame.height/2
            randomImageContainer.image = randomImages[randomIndex]
            randomImageContainer.contentMode = .ScaleAspectFill
            view.addSubview(randomImageContainer)

            closeRandomButton.frame = randomImageContainer.frame
            closeRandomButton.addTarget(self, action: "closeRandomView:", forControlEvents: UIControlEvents.TouchUpInside)
            view.addSubview(closeRandomButton)
            view.bringSubviewToFront(closeRandomButton)

            UIView.animateWithDuration(1, animations: {
                self.randomImageContainer.alpha = 1
                self.blurRandomView.alpha = 1
            })
        }
    }
}

func closeRandomView(sender: UIButton!) {
    println("Activated")
    UIView.animateWithDuration(1, animations: {
        self.randomImageContainer.alpha = 0
        self.blurRandomView.alpha = 0
    }, completion: { (finished:Bool) in
        self.blurRandomView.removeFromSuperview()
        self.randomImageContainer.removeFromSuperview()
        self.closeRandomButton.removeFromSuperview()
    })
}

图像和模糊视图的alpha值在viewDidLoad()中设置,因此它们肯定会第一次传递if语句。

我无法看到问题,所以我想知道是否有人会发现任何问题?

感谢。

1 个答案:

答案 0 :(得分:0)

想出来。有两个问题。首先,我正在从SuperView中删除视图,这意味着他们无法在if语句中进行检查。另一个问题是我的代码中有一个不同的视图被带到了前面,这意味着按钮无法访问。