【问题标题】:Perform action as soon as camera opens ios相机打开 ios 后立即执行操作
【发布时间】:2014-01-06 01:32:11
【问题描述】:

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

【问题讨论】:

    标签: ios7 camera iphone-5


    【解决方案1】:

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

    有一个符合 KVO 的connected 属性可能会在相机打开时告诉您(不过我不确定)。这是documentation

    已连接

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

    @property(nonatomic, readonly, getter=isConnected) BOOL 已连接

    讨论 该属性的值表示设备是否 由接收器表示已连接并可用作 捕获设备。当此属性的值为给定的 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

    希望对您有所帮助! :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-03
      • 1970-01-01
      相关资源
      最近更新 更多