swift UIButton.selected不起作用

时间:2015-11-18 15:31:03

标签: swift uibutton

我正在尝试在播放音频时选择一个按钮。问题是按钮不会改变,除非我在循环中更改它(while(audioPlayer.playing){button.selcted = true})。在这种情况下,我不能使用该应用程序,直到音频完成(出于显而易见的原因)

希望有人可以帮助我

func addButton(number: String, x:CGFloat, y:CGFloat){

    let button   = UIButton(type: UIButtonType.Custom) as UIButton

    button.setTitle(number, forState: .Normal)

    button.frame = CGRectMake(x, y, 68, 212)

    if let image  = UIImage(named: number) {
        button.setImage(image, forState: .Normal)
    }

    button.addTarget(self, action: "play:", forControlEvents:.TouchUpInside)
    self.view.addSubview(button)

}

@IBAction func play(sender: UIButton) {
    button=sender

    button.selected = true

    let audioFilePath = NSBundle.mainBundle().pathForResource(sender.currentTitle, ofType: "WAV")

    if audioFilePath != nil {

        let audioFileUrl = NSURL.fileURLWithPath(audioFilePath!)

        do { audioPlayer = try AVAudioPlayer(contentsOfURL: audioFileUrl, fileTypeHint: nil)} catch _ { return }
        audioPlayer?.delegate = self
        audioPlayer.play()

    } else {
        print("audio file is not found")
    }
}

1 个答案:

答案 0 :(得分:0)

我刚刚编写了一个测试应用,看看你在这里想要做什么,设置sender.enabled = false就是你要找的。 (按钮作为动画,转到未启用设置的淡出灰色,然后返回到启用的原始颜色,将其设置为false可防止第二部分发生)

编辑:最后,所需的结果是带有灰色文本的可访问按钮,因此我们使用sender.setTitleColor(UIColor.grayColor(),forState:.Highlighted)将文本高亮状态更改为灰色,用户将突出显示的变量设置为true播放功能。