我正在制作一个闹钟,当UIDatePicker
中的时间等于我希望执行某个功能的确切时间时,我尝试了这个:
if theDatePicker == strDate {
playTheSound()
} else {
println("HELLO")
}
当UIDatePicker
等于确切时间时,我想要执行的功能
func playTheSound() {
var alertSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("Annoying_Alarm_Clock-UncleKornicob-420925725", ofType: "mp3")!)
playSound.text = "\(alertSound)"
var error:NSError?
audioPlayer = AVAudioPlayer(contentsOfURL: alertSound, error: &error)
audioPlayer.prepareToPlay()
audioPlayer.play()
let alert = UIAlertController(title: "WAKE UP", message:nil, preferredStyle: UIAlertControllerStyle.Alert);
alert.message = "ITS TIME TO WAKE UP"
let dismissHandler = {
(action: UIAlertAction!) in
self.dismissViewControllerAnimated(true, completion: { () -> Void in
})
}
alert.addAction(UIAlertAction(title: "I'm Up!", style: .Default, handler: dismissHandler))
presentViewController(alert, animated: true) { () -> Void in
}
}
获取确切时间
func getTime() {
var date = NSDate()
var outputFormat = NSDateFormatter()
outputFormat.locale = NSLocale(localeIdentifier:"en_US")
outputFormat.dateFormat = "HH:mm:ss"
timeLabel.text = (outputFormat.stringFromDate(date)) // This line here will update your timeLabel with the current time every second
}
var timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("getTime"), userInfo: nil, repeats: true)
我的UIDatePicker名为theDatePicker
func handler(sender: UIDatePicker) {
var timeFormatter = NSDateFormatter()
timeFormatter.timeStyle = NSDateFormatterStyle.ShortStyle
var strDate = timeFormatter.stringFromDate(theDatePicker.date)
}
我的问题 当UIDatePicker和确切的时间相等时,我想让playTheSound()运行。
感谢您的时间和耐心。
干杯!
答案 0 :(得分:1)
您可以使用定时事件,或者如果您还希望在应用未处于活动状态时进行呼叫,则可以使用本地通知。在datepicker中选择日期之后安排其中一个日期。
这个堆栈溢出帖子中解释了两者:Schedule multiple, daily events with NSTimer?
答案 1 :(得分:0)
我强烈推荐本地通知;这样,即使您的应用程序未打开,您也可以采取行动。
基本上,您呼叫系统在特定时间安排(您可以从日期选择器中提取)。当计划事件发生时 - 无论您的应用程序是打开还是关闭 - 系统都会通过委托方法回叫您的应用程序。然后你可以对事件采取行动(即播放你的声音)。