2015-04-25 2 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

Смежные вопросы