2016-11-06 5 views
0

AVCaptureStillImageOutputで静止画を撮りたいときは、フォーカスを調整するときにiPhoneでテストする際にキー値観測を使用しています6+ IOSの10フォーカスが調整されているときにKVOで検出 - iPhone 6で正しくありません

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context 
{ 
    if([keyPath isEqualToString:@"adjustingFocus"]) 
    { 
     BOOL adjustingFocus = [ [change objectForKey:NSKeyValueChangeNewKey] isEqualToNumber:[NSNumber numberWithInt:1] ]; 
     if (adjustingFocus) 
     { 
      NSLog(@"adjusting focus started"); 
     } 
     else 
     { 
      NSLog(@"adjustingFocus done"); 
     } 
    } 
} 

いくつかの時間が複数回呼び出される方法であって、第一時間で、私はフォーカス画面がぼやけているので、撮影された静止画像で行われることを検出します。私はその場合(ぼやけた画像)、このメソッドは2回以上呼び出されることに気付きました(フォーカスを調整するための開始と終了)。フォーカスが適切に調整されていないことを検出して、次のコールまたはそのコールが1回だけ呼び出されるのを待つ方法はありますか?

答えて

0

私は、KVOに関する限り、1つのフォーカス「イベント」が開始、停止、開始、停止のシーケンスを迅速に連続して生成することがあることを発見しました。これを軽減するために、私は "開始"について聞いた時のタイムスタンプを追跡し、特定の時間閾値が過ぎる(私は300msを使用した)前に次の "停止"イベントが来たら、私は "stop"イベントを無視します。私はかなり別の「スタート」がすぐに来ることを確信しています(私たちはすでに「開始」しているので無視します)。その後、最初の「スタート」から300ms以上経過する最終の「停止」私はその焦点を当てるイベントの真の終わりであると考えています。

関連する問題