2017-01-03 2 views
1

간단히 말하면,이 단추를 클릭 할 때보기에는 단추에 영문자가 표시됩니다.MP3 파일이 켜지지 않음 단추 선택

각 단추와 관련된 오디오 파일을 재생하려고 시도했지만 파일이 재생되지 않습니다. 개별적으로 단추는 콘센트에 제공되지 않지만 내부 위로 터치 기능에 모두 연결됩니다. 나는이 문제를 가지고했기 때문에

class UIAlphabetController: UIViewController, AVAudioPlayerDelegate{ 
    @IBAction func PlaySound(Sender: UIButton) { 
     let soundname:String = Sender.currentTitle! 
     var player: AVAudioPlayer? 

     let url = Bundle.main.url(forResource: soundname, withExtension: "mp3") 

     do { 
     player = try AVAudioPlayer(contentsOf: url!) 
     guard let player = player else { return } 

     player.prepareToPlay() 
     player.play() 
     } catch let error { print(error.localizedDescription) } 
    } 
} 

AQDefaultDevice (188): skipping input stream 0 0 0x0 메시지가 올라오고있다. 중단 점을 사용한 테스트에서 soundnameurl은 모두 예상 값을가집니다.

아무에게도이 문제를 해결하는 방법에 대한 아이디어가 있습니까?

답변

2

AVAudioPlayer의 인스턴스를 메서드 바깥으로 옮깁니다. 이렇게하면 플레이어가 사운드를 재생할 수있을만큼 길게 유지됩니다. 그것이 작동하지 않는 이유는 플레이어 인스턴스가 완료된 후에 플레이어 인스턴스를 사용했기 때문에 플레이어 인스턴스를 삭제하기 때문입니다.

class UIAlphabetController: UIViewController, AVAudioPlayerDelegate { 
     var player: AVAudioPlayer? 
     @IBAction func PlaySound(Sender: UIButton) { 
      let soundname:String = Sender.currentTitle! 


      let url = Bundle.main.url(forResource: soundname, withExtension: "mp3") 

      do { 
      player = try AVAudioPlayer(contentsOf: url!) 
      guard let player = player else { return } 

      player.prepareToPlay() 
      player.play() 
      } catch let error { print(error.localizedDescription) } 
    } 
} 
+0

Whelp. 나는 그것이 상관 관계가 있다는 것을 깨닫지 못했지만, 그것은 저에게 많은 번거 로움을 덜어주었습니다. 감사합니다 – MoMN

+0

굉장! 다행스럽게 도울 수 있어요. @MoMN –