相机打开ios后立即执行操作

时间:2013-12-18 02:16:29

标签: ios7 camera iphone-5

我使用ZBAR扫描仪扫描条形码。但相机打开需要一段时间。与此同时,我希望在按下按钮后有一个加载动画,并在相机打开后停止动画。一旦相机在ios中打开事件处理程序,任何人都可以告诉如何检测。

1 个答案:

答案 0 :(得分:1)

我不确定这是否是你要找的,但我认为你可以使用KVO(键值观察)来获得事件处理机制。

这个connected属性符合KVO标准,可能会告诉您相机何时打开(我不确定)。这是documentation

  

已连接

     

指示设备当前是否已连接。   (只读)

     

@property(非原子,只读,getter = isConnected)连接BOOL

     

讨论此属性的值指示设备   由接收器代表连接并可用作a   捕获设备。当此属性的值对于给定的值变为NO时   例如,它不会再次成为YES。如果身体相同   设备再次可用于系统,它将被表示   使用AVCaptureDevice的新实例。

     

您可以使用键值观察来观察此属性的值   在设备不再可用时收到通知。

然后,您可以通过以下链接尝试为此连接的属性实现观察者。基本上你需要做的是:

事件处理程序

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    if( [keyPath isEqualToString:@"connected"] ){
        BOOL isConnected = [ [change objectForKey:NSKeyValueChangeNewKey] isEqualToNumber:[NSNumber numberWithInt:1] ];
        if(isConnected){
            //remove loading icon..
        } else {
            //show loading icon..
        }
    }
}

活动报名

- (void)viewWillAppear:(BOOL)animated{
    AVCaptureDevice *camDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    int flags = NSKeyValueObservingOptionNew; 
    [camDevice addObserver:self forKeyPath:@"connected" options:flags context:nil];

    (...)   
}

以下是可能对您有帮助的文档:

  1. KVO Programming Guide
  2. NSKeyValueObserving Protocol
  3. 希望这对你有所帮助! :)