swift - UISlider 不更新值

标签 swift uislider

如果这是一个愚蠢的问题,我深表歉意。我似乎无法让我的 slider 在与其交互时更新其值。 (我将向大家指出这段长代码中的最后一个方法)

class CustomSlider: UISlider {

    override func trackRect(forBounds bounds: CGRect) -> CGRect {
        var rect = super.trackRect(forBounds: bounds)
        rect.size.height = 7
        return rect
    }
}

class FactionButton: CustomSlider {
    var factionSlider = CustomSlider(frame: CGRect(x: 15, y: 542, width: 386, height: 57))

    func factionBalanceSlider(){
        factionSlider.minimumValueImage = #imageLiteral(resourceName: "Alliance Slider")
        factionSlider.maximumValueImage = #imageLiteral(resourceName: "Horde Slider")
        factionSlider.setThumbImage(#imageLiteral(resourceName: "Thumb Image"), for: .normal)
        factionSlider.minimumTrackTintColor = UIColor(red:0.08, green:0.33, blue:0.69, alpha:0.8)
        factionSlider.maximumTrackTintColor = UIColor(red:1.00, green:0.00, blue:0.00, alpha:0.59)

        factionSlider.setValue(0.5, animated: true)
        factionSlider.isContinuous = false

        factionSlider.addTarget(self, action: #selector(recordFactionBalance(sender:)), for: .valueChanged)
    }

    func getSlider() -> CustomSlider {
        return factionSlider
    }

    override func trackRect(forBounds bounds: CGRect) -> CGRect {
        var customBounds = super.trackRect(forBounds: bounds)
        customBounds.size.height = 10
        return customBounds
    }

    @objc func recordFactionBalance(sender: CustomSlider){
        //also calculates balance and adds it into the quiz data
        print("hi")
        print(sender.value) //It's this part that doesn't work 

    }

}

问题出在最靠近底部的位置。 (其他一切都很好) Action 功能似乎根本没有被触发,即使当我与它交互时也是如此。两个 print 语句都没有被执行。有什么想法吗?

干杯

最佳答案

getSlider(),我可以猜测您正在使用这个作为获取CustomSlider的实用程序。所以,我怀疑您正在将 slider 添加到 View ,如下所示,

let container = FactionButton()
container.factionBalanceSlider()
let slider = container.getSlider()

self.view.addSubview(slider)

如果您不将 container 添加到被设置为 .valueChange 事件接收者的 view 中,那么它将不会收到任何事件。要接收事件,您还需要在 View 中添加容器,如下所示,

self.view.addSubview(container)

关于swift - UISlider 不更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51795985/

相关文章:

ios - 向 float UICollectionView header 添加阴影

objective-c - 用某些里程碑的指标标记 iOS UISlider 的好方法是什么

iphone - 如何对 slider 进行编程以通过一个按钮执行两件事?

ios - 如何在 tableview cell swift 中自定义和实现 slider

javascript - 在 UISlider 下添加数字

ios - Swift 中缺少属性 setter 和 getter

ios - UIAlertView 的大小限制

iphone - 标签中带有实时的 slider

ios - 在 Firebase 中创建用户后立即发送验证邮件

ios - 当所有 subview 都隐藏在动画 block 中时,UIStackView 将其排列的 subview 移动到左上角