我正在创建一个显示在模糊背景之上的弹出视图。它似乎工作正常,除了目前偶尔出现时,关闭按钮根本不起作用。这似乎经常发生在第二次使用。
这是我的代码:
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语句。
我无法看到问题,所以我想知道是否有人会发现任何问题?
感谢。
答案 0 :(得分:0)
想出来。有两个问题。首先,我正在从SuperView中删除视图,这意味着他们无法在if语句中进行检查。另一个问题是我的代码中有一个不同的视图被带到了前面,这意味着按钮无法访问。