Mantenga el button UIB seleccionado / resaltado después de tocar

Me gustaría que mi button permanezca resaltado después de que el usuario lo toque. Si el usuario vuelve a tocar el button, me gustaría que se deselect / no resalte. No estoy seguro de cómo hacer esto rápidamente. Actualmente estoy configurando la image de resaltado de button y la image seleccionada en el mismo .png usando el creador de interfaces.

Cuando ejecuto la aplicación y presiono el button, cambia a mi image de resaltado mientras mi dedo permanezca en el button.

Use el siguiente código declare isHighLighted como variable de instancia

 //write this in your class var isHighLighted:Bool = false override func viewDidLoad() { let button = UIButton(type: .system) button.setTitle("Your title", forState: UIControlState.Normal) button.frame = CGRectMake(0, 0, 100, 44) self.view.addSubview(button as UIView) button.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside) } func buttonClicked(sender:UIButton) { dispatch_async(dispatch_get_main_queue(), { if isHighLighted == false{ sender.highlighted = true; isHighLighted = true }else{ sender.highlighted = false; isHighLighted = false } }); } 

Recomendaría utilizar el estado selected lugar de highlighted el código siguiente que se muestra con el estado seleccionado

 override func viewDidLoad() { let button = UIButton(type: .system) button.setTitle("Your title", forState: UIControlState.Normal) button.frame = CGRectMake(0, 0, 100, 44) self.view.addSubview(button as UIView) //set normal image button.setImage(normalImage, forState: UIControlState.Normal) //set highlighted image button.setImage(selectedImage, forState: UIControlState.Selected) button.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside) } func buttonClicked(sender:UIButton) { sender.selected = !sender.selected; } 
 func highlightButton(button: UIButton) { button.highlighted = true } @IBAction func touched(sender: UIButton) { let timer = NSTimer.scheduledTimerWithTimeInterval(0.0, target: self, selector: Selector("highlightButton(sender)"), userInfo: nil, repeats: true) } 
 func buttonPressed(_ sender: UIButton) { // "button" is a property if button.isSelected { button.setImage(UIImage(named: "filled-heart"), for: .normal) button.isSelected = false }else { button.setImage(UIImage(named: "empty-heart"), for: .selected) button.isSelected = true } }