【发布时间】:2014-01-06 01:32:11
【问题描述】:
我正在使用 ZBAR 扫描仪来扫描条形码。但是相机打开需要相当长的时间。同时,我希望在按下按钮后有一个加载动画,并在相机打开后停止动画。任何人都可以告诉如何在相机在 ios 中打开事件处理程序后立即检测。
【问题讨论】:
我正在使用 ZBAR 扫描仪来扫描条形码。但是相机打开需要相当长的时间。同时,我希望在按下按钮后有一个加载动画,并在相机打开后停止动画。任何人都可以告诉如何在相机在 ios 中打开事件处理程序后立即检测。
【问题讨论】:
我不确定这是否是您要寻找的,但我认为您可以使用 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];
(...)
}
以下是可能对您有所帮助的文档:
希望对您有所帮助! :)
【讨论】: