我想播放一个声音(铃声),其中包含多个scheduledTimerWithTimeInterval设置,例如Every 5,Every 9 Every 35 after 6 ....等等,现在我Bell开始玩Interval 55,56,59,60,45,42。 ...但我希望在52上暂停时间然后我使所有计时器无效,因为没有得到暂停方法或NSTimer的属性之后我再次启动计时器以新的间隔开始,如48,47,43 ....但我想保持旧时间间隔所以任何人都有这个想法,请帮助我。
-(void) bellsSchedual {
arrBellsListAllData = [DBModel getDataFromBellsList:prop.userId];
DBProperty *bellProp = [[DBProperty alloc]init];
for (int i = 0; i < arrBellsListAllData.count; i++) {
bellProp=[arrBellsListAllData objectAtIndex:i];
NSString* bellsTime=bellProp.bTime;
if ([bellProp.bTimeSchedule isEqualToString: @"after"]) {
NSTimer* bellTimer = [NSTimer scheduledTimerWithTimeInterval: [bellsTime intValue]
target: self
selector: @selector(playSound:)
userInfo: nil
repeats: NO]
[arrTimers addObject:bellTimer];
} else if ([bellProp.bTimeSchedule isEqualToString: @"every"]) {
NSTimer* bellTimer = [NSTimer scheduledTimerWithTimeInterval: [bellsTime intValue]
target: self
selector: @selector(playSound:)
userInfo: nil
repeats: YES];
[arrTimers addObject: bellTimer];
}
}
}
由于
答案 0 :(得分:1)
如果我正确理解您的问题,您需要一个可以暂停的计时器,并且已正确确定NSTimer
无法暂停。
你可以在大纲中考虑的是:
tick
,它会导致计时器进展。每个钟都使用这个类的实例;和NSTimer
来提供勾号 - 当它触发时,它会调用所有已注册的自定义计时器的tick
方法。使此NSTimer
无效将停止滴答,有效地暂停自定义计时器。创建新的NSTimer
以提供刻度将重新启动您的自定义计时器。HTH
答案 1 :(得分:0)
问题不是很清楚...... 据我了解,每个铃声都有它自己的计时器和不同的间隔时间。
将属性bCurrentTime添加到bellProp。您在重置系统或创建bellProp对象时将其设置为bTime。
在您点击计时器而不是bTime时使用此值。
在playSound方法中,使用当前时间间隔更新此值。
这样,当您使所有计时器无效并重新启动它们时,将存储以前的所有时间。
添加重置方法将所有铃声bCurrentTime设置为bTime。
答案 2 :(得分:0)
如果您想控制计时器,则需要将它们设为属性。这样,您就可以在声明它们的文件的整个范围内启动,停止和执行任何操作。