簡體   English   中英

如何暫停和恢復多個NSTimer?

[英]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無法暫停。

您可以在大綱中考慮的是:

  1. 您自己的計時器類提供了一個方法,例如tick ,它使計時器前進。 為每個鈴鐺使用此類的實例;
  2. 使用重復的NSTimer來提供刻度線-觸發時,它將調用所有已注冊的自定義計時器的tick方法。 使此NSTimer無效會使刻度線停止,從而有效地暫停自定義計時器。 創建一個新的NSTimer來提供刻度,將重新啟動您的自定義計時器。

HTH

問題還不是很清楚……據我了解,每個鍾聲都有自己的計時器,並且間隔時間各不相同。

將屬性bCurrentTime添加到bellProp。 重置系統或創建bellProp對象時,可以將其設置為bTime。

當您啟動計時器而不是bTime時,請使用此值。

在playSound方法中,使用當前時間間隔更新此值。

這樣,當您使所有計時器失效並重新啟動它們時,將存儲所有以前的時間。

添加重置方法以將所有鈴聲bCurrentTime設置為bTime。

如果要控制計時器,則需要為其設置屬性。 這樣,您可以在聲明它們的文件的整個范圍內啟動,停止和執行所需的任何操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM