2017-08-30 7 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

をクラッシュログは、何と言っています。 FYI NSTimerは永遠にありました。 – Fogmeister

+2

Swiftを使用するもう一つの理由。それはコンパイルすることを拒否し、クラッシュを防ぎました。これは、Swiftが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]; 
} 
関連する問題