UISlider停止更改值

时间:2018-03-22 08:05:55

标签: ios swift uislider

我有一个UISlider,我希望它停在某个值。这不是最大值,而是以编程方式提供的数字。

示例:UISlider的最大值为100.停止值为20.因此,用户不能拖动超过20。

我的代码:

@IBOutlet weak var precentLbl: UILabel!
@IBOutlet weak var precentSlider: UISlider!

var maxValuePrecent: Float = 20
override func awakeFromNib() {
    precentSlider.addTarget(self, action: #selector(self.updateKmsLabel(sender:)), for: .allEvents)
}

// To use
    @objc func updateKmsLabel(sender: UISlider!) {
        let value = Int(sender.value)
        DispatchQueue.main.async {
            self.precentLbl.text = String(value) + "%"
        }

        if Float(value) > maxValuePrecent {
            precentSlider.isEnabled = false //don't work
            precentSlider.endEditing(true) //don't work
            precentSlider.isContinuous = false //don't work
            precentSlider.isSelected = false //don't work
        }
    }

this variant对我不起作用

1 个答案:

答案 0 :(得分:0)

试试这个

@objc func updateKmsLabel(sender: UISlider!) {
        let value = Int(sender.value)
        DispatchQueue.main.async {
            self.precentLbl.text = String(value) + "%"
        }

        if Float(value) >= maxValuePrecent {
            precentSlider.isEnabled = false //don't work
            DispatchQueue.main.async {
                self.precentLbl.text = "\(maxValuePrecent)%"
                sender.value = maxValuePrecent
            }
            }

        }