2017-08-30 61 views
3

我在iOS 10中使用下面的代碼,但是當我在iOS 9中運行它時,它崩潰了。我不認爲NSTimer scheduledTimerWithTimeInterval:repeats:block:支持iOS 9.我如何實現一個可以在iOS 8-10中工作的計時器?iOS 9兼容版本的NSTimer scheduledTimerWithTimeInterval:重複:block:?

static NSTimer* timer = nil; 

- (void)documentInteractionControllerWillBeginPreview:(UIDocumentInteractionController *)controller 
{ 
    timer = [NSTimer scheduledTimerWithTimeInterval:0.1 repeats:YES block:^(NSTimer * _Nonnull timer) { 
     [[UIApplication sharedApplication] setStatusBarHidden:YES]; 
    }]; 
} 

-(void)documentInteractionControllerDidEndPreview:(UIDocumentInteractionController *)controller 
{ 
    [timer invalidate]; 
    [[UIApplication sharedApplication] setStatusBarHidden:YES]; 
} 
+1

什麼崩潰日誌說。僅供參考NSTimer一直存在。 – Fogmeister

+2

使用Swift的另一個原因。它本可以拒絕編譯,從而避免了崩潰。這是因爲Swift _knows_這種方法在iOS 9上不被支持。我很驚訝地聽到Objective-C沒有趕上。你甚至沒有收到警告?驚人。 – matt

回答

2

這個固定:

static NSTimer* timer = nil; 

- (void)documentInteractionControllerWillBeginPreview:(UIDocumentInteractionController *)controller 
{ 
    timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(hideStatusBar) userInfo:nil repeats:YES]; 
} 

-(void)hideStatusBar 
{ 
    [[UIApplication sharedApplication] setStatusBarHidden:YES]; 
} 

-(void)documentInteractionControllerDidEndPreview:(UIDocumentInteractionController *)controller 
{ 
    [timer invalidate]; 
    [[UIApplication sharedApplication] setStatusBarHidden:YES]; 
}