[英]How to Pause and Resume Multiple NSTimer?
我想播放具有多個ScheduledTimerWithTimeInterval的聲音(鈴聲),例如每5,每9,每6之后的35 .... etc。現在,我的鈴聲開始以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];
}
}
}
謝謝
如果我正確理解了您的問題,則需要一個可以暫停的計時器,並正確確定了NSTimer
無法暫停。
您可以在大綱中考慮的是:
tick
,它使計時器前進。 為每個鈴鐺使用此類的實例; 和 NSTimer
來提供刻度線-觸發時,它將調用所有已注冊的自定義計時器的tick
方法。 使此NSTimer
無效會使刻度線停止,從而有效地暫停自定義計時器。 創建一個新的NSTimer
來提供刻度,將重新啟動您的自定義計時器。 HTH
問題還不是很清楚……據我了解,每個鍾聲都有自己的計時器,並且間隔時間各不相同。
將屬性bCurrentTime添加到bellProp。 重置系統或創建bellProp對象時,可以將其設置為bTime。
當您啟動計時器而不是bTime時,請使用此值。
在playSound方法中,使用當前時間間隔更新此值。
這樣,當您使所有計時器失效並重新啟動它們時,將存儲所有以前的時間。
添加重置方法以將所有鈴聲bCurrentTime設置為bTime。
如果要控制計時器,則需要為其設置屬性。 這樣,您可以在聲明它們的文件的整個范圍內啟動,停止和執行所需的任何操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.