我使用ZBAR扫描仪扫描条形码。但相机打开需要一段时间。与此同时,我希望在按下按钮后有一个加载动画,并在相机打开后停止动画。一旦相机在ios中打开事件处理程序,任何人都可以告诉如何检测。
答案 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];
(...)
}
以下是可能对您有帮助的文档:
希望这对你有所帮助! :)