如果在播放歌曲之前按下音量滑块,如何阻止音乐播放器崩溃?
Posted
技术标签:
【中文标题】如果在播放歌曲之前按下音量滑块,如何阻止音乐播放器崩溃?【英文标题】:How can I stop the volume slider from crashing the music player if pressed before the song is played? 【发布时间】:2015-11-30 14:19:07 【问题描述】:我确定我在问一个简单的问题,但我才刚刚开始编码......所以请可怜我吧!我在 Xcode 7 Swift 2 上。音乐播放器的类型是 AVAudioPlayer。如果我在按下播放按钮之前启动应用程序并移动音量滑块(类型 UISlider),它会使应用程序崩溃,而在按下播放后它可以完美运行,即使音乐暂停。我知道原因是因为volumeSlider func中的“musicPlayer.playing”。我尝试了很多 If 语句(例如“if musicPaused 等),但我无法让它工作。感谢您的帮助。这是音量滑块功能:
@IBAction func volumeSliderChanged(sender: AnyObject)
musicPlayer.playing
musicPlayer.volume = volumeSlider.value
这是播放函数:
@IBAction func playPause(sender: AnyObject)
var items = toolbar.items!
if musicPaused == false
playPauseBtn = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Pause, target: self, action: "playPause:")
items[0] = playPauseBtn
toolbar.setItems(items, animated: true)
musicPlayer.play()
musicPaused = true
else
var items = toolbar.items!
playPauseBtn = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Play, target: self, action: "playPause:")
items[0] = playPauseBtn
toolbar.setItems(items, animated: true)
musicPlayer.pause()
musicPaused = false
@IBAction func playPauseButton(sender: UIButton)
let playBtn = sender as UIButton
if toggleState == 1
if isPlaying
musicPlayer.play()
else
playMusic()
toggleState = 2
playBtn.setImage(UIImage(named:"100_pause.png"),forState:UIControlState.Normal)
else
musicPlayer.pause()
toggleState = 1
playBtn.setImage(UIImage(named:"100_play-arrow.png"),forState:UIControlState.Normal)
这是我的音乐播放器声明:
var musicPlayer: AVAudioPlayer = AVAudioPlayer()
【问题讨论】:
【参考方案1】:如果您包含声明“musicPlayer”的代码,将会有所帮助。 崩溃后的错误日志说了什么?
我建议使用 MPVolumeView 类来控制您的音频。它应该控制我认为您正在寻找的设备音量。我附上了别人的帖子,有类似的问题。 来源:How to change ios volume in swift with help UISlider
【讨论】:
您好,感谢您的回复。我编辑了帖子并添加了声明。错误显示“musicPlayer.playing”行,线程1:EXC_BAD_ACCESS(代码=1,地址=0x38)以上是关于如果在播放歌曲之前按下音量滑块,如何阻止音乐播放器崩溃?的主要内容,如果未能解决你的问题,请参考以下文章
如何在kivy python中使用滑块作为进度条并控制音频?