2015-04-25 46 views
0

我想添加一個按鈕到UIVisualEffectView。但是,我添加的按鈕沒有響應觸摸事件,我不明白爲什麼。這是代碼。放置在UIVisualEffectView頂部的按鈕沒有響應

override func viewDidLoad() { 
     super.viewDidLoad() 
     let image = UIImage(named: "face2") 
     let imageView = UIImageView(image: image) 
     imageView.frame = CGRectMake(0, 0, 200, 200) 
     let button = UIButton(frame: CGRectMake(50, 50, 100, 100)) 
     button.setTitle("huhuhu", forState: UIControlState.Normal) 
     button.setTitleColor(UIColor.blackColor(), forState: .Normal) 
     button.userInteractionEnabled = true 

     let effect = UIBlurEffect(style: .Light) 
     let blurView = UIVisualEffectView(effect: effect) 
     blurView.frame = view.bounds 

     view.addSubview(imageView) 
     view.addSubview(blurView) 
     view.addSubview(button) 
    } 
+0

原來我需要設置不同的顏色突出顯示的狀態。 – brumbrum

回答

2

您需要添加目標行動(button.addTarget),即什麼是應該按什麼時候做的按鈕,請參見下面的代碼修改方式:

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 

     let image = UIImage(named: "face2") 
     let imageView = UIImageView(image: image) 
     imageView.frame = CGRectMake(0, 0, 200, 200) 
     let button = UIButton(frame: CGRectMake(50, 50, 100, 100)) 
     button.setTitle("huhuhu", forState: UIControlState.Normal) 
     button.addTarget(self, action: "sayHi:", forControlEvents: .TouchUpInside) 
     button.setTitleColor(UIColor.blackColor(), forState: .Normal) 
     button.userInteractionEnabled = true 

     let effect = UIBlurEffect(style: .Light) 
     let blurView = UIVisualEffectView(effect: effect) 
     blurView.frame = view.bounds 

     view.addSubview(imageView) 
     view.addSubview(blurView) 
     view.addSubview(button) 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


    func sayHi(sender:UIButton) { 
     let randomIntH = arc4random_uniform(UInt32(view.bounds.size.width)-40) 
     let randomIntV = arc4random_uniform(UInt32(view.bounds.size.height)-15) 
     let frame = CGRectMake(CGFloat(randomIntH), CGFloat(randomIntV), 10, 10) 
     let label = UILabel(frame: frame) 
     label.text = "Hallo" 
     label.sizeToFit() 
     view.addSubview(label) 
    } 
} 
+0

太棒了!這有很大的幫助,因爲我可能很快就會問自己這個問題。但實際上我正在追蹤動畫,指出按鈕被點擊。原來我需要爲突出顯示的狀態設置不同的顏色 – brumbrum