Keep UIButton Selected/Highlighted after touch

后端 未结 5 1449
北荒
北荒 2020-12-24 15:14

I\'d like my button to remain highlighted after the user taps it. If the user taps the button again I\'d like it to become de-selected/unhighlighted. I\'m not sure how to go

相关标签:
5条回答
  • 2020-12-24 15:35

    Swift 5:

    @IBAction func toggleButton(_ sender: UIButton) {
        sender.isSelected = !sender.isSelected
    }
    
    0 讨论(0)
  • 2020-12-24 15:42

    Use below code declare isHighLighted as instance variable

    //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
            }
         });
    }
    

    I would recomend to use selected state instead of highlighted the below code demonstarate with selected state

    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;
    }
    
    0 讨论(0)
  • 2020-12-24 15:44
    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
        }
    }
    
    0 讨论(0)
  • 2020-12-24 15:50
    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)
    }
    
    0 讨论(0)
  • 2020-12-24 15:55

    this one worked fine for me!

    func buttonColorChanger(sender :  UIButton )  {
    
        if button.isSelected == false
        {
    
            button.backgroundColor = UIColor.purple
            print("selected")
    
            button.setTitle("selected", for: .normal)
            button.setTitleColor(UIColor.white, for: .normal)
             button.isSelected = true
        }else{
    
            button.backgroundColor = UIColor.white
            print("unselected")
            button.isSelected = false
    
        }
    }
    
    0 讨论(0)
提交回复
热议问题