2009-10-30 5 views
1

OS 3.1의 UIImagePickerController 인터페이스를 cameraOverlayView 및 takePicture와 함께 사용하려고하는데 분명히 어떻게 작동하는지 이해하지 못했고 동작이 잘못되었습니다. 필요.iPhone : 프로그래밍 방식으로 사진 찍기

내가하고 싶은 일은 카메라를 열고 사용자가 피커와 상호 작용하거나 이미지를 편집하지 않아도 자동으로 사진을 찍는 것입니다. 그래서 (http://github.com/pmark/Helpful-iPhone-Utilities/tree/master/BTL%20Utilities/의 예와 유사) UIImagePickerController를 서브 클래스와 컨트롤의 모든 전원을 끄십시오

- (void)displayModalWithController:(UIViewController*)controller animated:(BOOL)animated { 
self.sourceType = UIImagePickerControllerSourceTypeCamera; 
self.showsCameraControls = NO; 
self.navigationBarHidden = YES; 
self.toolbarHidden = YES; 
    // Setting the overlay view up programmatically. 
ipView = [[ImagePickerView alloc] init]; 
self.cameraOverlayView = ipView; 
[controller presentModalViewController:self animated:NO]; 
} 

을 수 있도록 OverlayView, 나는 때문에, 나는이 알고 (화재로 UIImagePickerController를의 takePicture 방법을 강제로 관리했습니다 나는 그것을 NSLog 할 수 있고, 사진을 찍는 카메라의 소리를 듣는다). overlayView 잘 보여줍니다. 그러나 대리자 메서드 didFinishPickingMediaWithInfo :는 호출되지 않으며 imagePickerControllerDidCancel도 호출되지 않습니다.

그렇다면 어떻게해야 대리자 메서드를 호출 할 수 있습니까? 아니면 takePicture 메서드를 재정 의하여 그림을 저장할 수 있습니까? (나는 그림 데이터를 여기에서 붙잡는 방법을 모르고있다. 그리고 구글은 나를 실패한 것처럼 보인다). 나는 UIImagePickerController를의 내장 작동 방식을 이해하는 데 실패했습니다 느낌을 도울 수 있지만, 문서 지나치게 도움이되지 않습니다

예 :

"당신은를 표시하는 사용자 정의 오버레이 뷰를 제공 할 수 있습니다 사용자 정의 사진 촬영 인터페이스를 사용하고 코드에서 사진 촬영을 시작할 수 있습니다. 사용자 정의 오버레이보기는 이미지 선택기 인터페이스에서 제공하는 기본 컨트롤 외에 또는 대신 표시 할 수 있습니다. "

또는 showCameraControls에서

". 당신이 당신의 자신의 사용자 지정 컨트롤을 NO이 속성을 설정하고 제공하는 경우, 당신은 이미지 피커 인터페이스를 해고하기 전에 여러 사진을 찍을 수 있습니다"

- 피커 인터페이스를 닫으려면 어떻게해야합니까?

참고 : 위임은 IB에서 올바르게 설정되므로 문제가되지 않습니다.

도움을 주셔서 감사합니다.

답변

2

나는 takePicture을 호출하기 전에 "충분히 오래"기다려야한다는 것을 알았거나 그냥 실패합니다. 저는 "long enough"의 최소값을 결정하는 방법에 대해서는 잘 대답하지 못합니다. 그러나 타이머를 설정하고 5 ~ 10 초를 기다리면 괜찮을 것입니다. takePicture에서 또는 대리인을 통해 직접 "아직 사진을 찍을 준비가되지 않았습니다. 죄송합니다"오류가 나타나면 좋겠지 만, 그렇지 않은 경우에는 알 수 있습니다.

0

내 자신의 질문에 대한 업데이트 : takePicture를 너무 일찍 사용하려고 시도한 것으로 나타났습니다. 액션을 오버레이의 버튼으로 옮기고 해당 버튼에서 takePicture를 전송하면 (일단 픽커가 모달로 표시되면) 대리자 메소드가 제대로 실행됩니다. 나는 내가 원했던 것이 성취 가능한지 모르겠다. 자동으로 그 버튼을 누르지 않아도 이미지를 찍는다. 그렇다면, 그것을 사용하려고 시도한 후에 언젠가 takePicture를 보내서 아마해야 할 것이다.

0

- (void) imageMethod : (id) 보낸 사람 { imagePickerController = [[UIImagePickerController alloc] init]; imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

imagePopover=[[UIPopoverController alloc]initWithContentViewController:imagePickerController]; 
[imagePopover presentPopoverFromRect:importButton.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES]; 
}