Я строй приложения для iPhone/IPad, и я пытаюсь решить проблемы со звуком:Swift: Звук играет на тренажере, но не на устройстве
Приложение поставляется с таймером обратного отсчета четыре минут. Когда coundown достигает 00:00, это вызывает короткий звуковой эффект. Это отлично работает на разных тренажерах, но мой телефон остается тихим. Приложение построено для 7.1. Мне интересно, это из-за кода или если мой телефон не работает (у него есть проблемы со звуком). Мой код выглядит хорошо? Надеюсь, кто-то может помочь в этом.
Здесь:
import Foundation
import UIKit
import AVFoundation
class VC11 : UIViewController {
@IBOutlet weak var timerLabel: UILabel!
var timer = NSTimer()
var count = 240
var timerRunning = false
var audioPlayer = AVAudioPlayer()
override func viewDidLoad() {
super.viewDidLoad()
func nextPage(sender:UISwipeGestureRecognizer) {
switch sender.direction {
case UISwipeGestureRecognizerDirection.Left:
print("SWIPED LEFT")
self.performSegueWithIdentifier("seg11", sender: nil)
default:
break
}
var leftSwipe = UISwipeGestureRecognizer (target: self, action: Selector("nextPage"))
var rightSwipe = UISwipeGestureRecognizer (target: self, action: Selector("nextPage"))
leftSwipe.direction = .Left
rightSwipe.direction = .Right
view.addGestureRecognizer(leftSwipe)
view.addGestureRecognizer(rightSwipe)
}
}
func updateTime() {
count--
let seconds = count % 60
let minutes = (count/60) % 60
let hours = count/3600
let strHours = hours > 9 ? String(hours) : "0" + String(hours)
let strMinutes = minutes > 9 ? String(minutes) : "0" + String(minutes)
let strSeconds = seconds > 9 ? String(seconds) : "0" + String(seconds)
if hours > 0 {
timerLabel.text = "\(strHours):\(strMinutes):\(strSeconds)"
}
else {
timerLabel.text = "\(strMinutes):\(strSeconds)"
}
stopTimer()
}
@IBAction func startTimer(sender: AnyObject) {
timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("updateTime"), userInfo: nil, repeats: true)
sender.setTitle("Running...", forState: .Normal)
}
func stopTimer()
{
if count == 0 {
timer.invalidate()
timerRunning = false
timerLabel.text = "04:00"
playSound()
count = 240
}
}
func playSound() {
var soundPath = NSBundle.mainBundle().pathForResource("Metal_Gong", ofType: "wav")
var soundURL = NSURL.fileURLWithPath(soundPath!)
self.audioPlayer = AVAudioPlayer(contentsOfURL: soundURL, error: nil)
self.audioPlayer.play()
}
}
Спасибо за ссылку и код. Где я могу добавить код? На данный момент я добавил его для переопределения func viewDidLoad() { super.viewDidLoad(), но он не работает. – mojomo
Попытался добавить его к нескольким функциям, как в playSound(), увы, не повезло. – mojomo
Попробуйте отладить его в 'updateTime()' функции. Печатать 'count' переменную NSLog после строки' count - '. Может быть, что-то не так с таймером, а не со звуком. – shpasta