可能是我做错了什么?码:
if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]){ UIImagePickerController *cameraUI = [[UIImagePickerController alloc] init]; cameraUI.sourceType = UIImagePickerControllerSourceTypeCamera; cameraUI.allowsEditing = NO; cameraUI.showsCameraControls = NO; cameraUI.delegate = self; NSArray *nibObjects = [[NSBundle mainBundle] loadNibnamed:@"OverlayVIEw" owner:self options:nil]; UIVIEw *controlsVIEw = [nibObjects objectAtIndex:0]; CGRect overlayVIEwFrame = cameraUI.cameraOverlayVIEw.frame; CGRect controlsFrame = CGRectMake(0.0,CGRectGetHeight(overlayVIEwFrame) - 54.0,CGRectGetWIDth(overlayVIEwFrame),54.0); controlsVIEw.frame = controlsFrame; [cameraUI.cameraOverlayVIEw addSubvIEw:controlsVIEw]; [self presentModalVIEwController: cameraUI animated: YES]; }解决方法 在锁定/解锁应用程序后,我发生了同样的情况,看起来快门在vIEwDIDAppear上打开.
所以,我将我的父视图控制器订阅到UIApplicationDIDBecomeActiveNotification并手动重新执行包含UIImagePickerController的控制器的vIEwWillAppear和vIEwDIDAppear方法
[[NSNotificationCenter defaultCenter] addobserver:self selector:@selector(applicationBecomeActive) name:UIApplicationDIDBecomeActiveNotification object:nil];.. .- (voID)applicationBecomeActive { if (imagePicker_) [imagePicker_ openShutter];}
然后在包含UIImagePickerController的控制器上
- (voID)vIEwWillAppear:(BOol)animated { [super vIEwWillAppear:animated]; [imagePickerController_ vIEwWillAppear:animated];}- (voID)vIEwDIDAppear:(BOol)animated { [super vIEwDIDAppear:animated]; [imagePickerController_ vIEwDIDAppear:animated]; imagePickerController_.cameraFlashMode = cameraFlashMode_; imagePickerController_.cameraDevice = cameraDevice_;}- (voID)openShutter { [imagePickerController_ vIEwWillAppear:YES]; [imagePickerController_ vIEwDIDAppear:YES];}
PS:如果你试试这个,不要忘记删除观察者
[[NSNotificationCenter defaultCenter] removeObserver:self];
希望这可以帮助
总结以上是内存溢出为你收集整理的objective-c – UIImagePickerController的快门全部内容,希望文章能够帮你解决objective-c – UIImagePickerController的快门所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)