2011-02-23 4 views
1

카메라를 소스 유형으로 사용하여 UIImagePickerController를 테스트하려고하면 시뮬레이터가 중단된다는 것은 알려진 문제입니까?IPHONE Simulator에서 UIImagePickerControllerSourceTypeCamera이 (가) 충돌합니까?

나는 다음과 같은 코드를 가지고있다 - [UIImagePickerController를 setSourceType :] 시뮬레이터이 실행

self.imgPicker = [[UIImagePickerController alloc] init]; 
self.imgPicker.allowsEditing = NO; 
self.imgPicker.delegate = self; 
[self.imgPicker setSourceType:UIImagePickerControllerSourceTypeCamera]; 
[self presentModalViewController:self.imgPicker animated:YES]; 
[imgPicker release]; 

을, 나는 스택 @에 objc-예외 던져 오류가 발생합니다.

이제 원본 유형을 사진 라이브러리로 설정하면 모든 것이 부드럽게 잘 돌아갑니다. 거래는 뭐니?

답변

10

시뮬레이터에는 카메라가 없으므로 그림을 찍을 때 시뮬레이트 할 수 없습니다 (isight를 사용하는 것이 좋겠지 만 Apple은 친절하지 않았습니다). 그러나 예를 들어 오래된 ipod touch에는 카메라가 없기 때문에 코드가 안전하지 않습니다.이 경우 앱이이 기기에서 충돌합니다. 애플로서는

UIImagePickerController documentation에서 제안 :

는 기본 제어를 포함하는 영상 선택기 컨트롤러 사용하려면 다음 단계를 수행

1.Verify 장치에서 콘텐츠를 픽업 할 수 있다는 원하는 출처 isSourceTypeAvailable : 클래스 메서드 을 호출하면 "UIImagePickerControllerSourceType" enum에서 상수를 제공합니다.

미디어 유형을 사용하면 availableMediaTypesForSourceType 호출하여 사용 있어 소스 유형을 사용할 수 있습니다 2.Check : 클래스 방법. 이렇게하면 은 비디오 녹화에 사용할 수있는 카메라와 이미지에만 사용할 수있는 카메라를 구분할 수 있습니다.

3.Tell 이미지 피커 컨트롤러

당신이 mediaTypes 속성을 설정 모두-에 의해 가능 정지 영상, 동영상 또는 을 할 미디어 유형에 따라 UI를 조정합니다.

4.Present presentModalViewController 호출하여 사용자 인터페이스 : 새로운 뷰 컨트롤러로 구성 화상 선택기 컨트롤러를 통과 현재 활성 뷰 컨트롤러 방법을 애니메이션. 사용자가 새로 촬영하거나 저장된 이미지 이나 동영상을 선택하기 위해 버튼을 탭하거나 작업을 취소 5.When

, 은 위임 객체를 사용하여 이미지 선택기를 닫습니다. 새로 캡처 된 미디어의 경우 위임자는 을 장치의 카메라 롤에 저장할 수 있습니다. 이전에 저장 한 미디어 의 경우 위임자 은 에 따른 이미지 데이터를 앱 용도로 사용할 수 있습니다.

따라서 isSourceTypeAvailable으로 전화를 걸어 소스 유형을 일관되게 설정해야합니다.

+0

그래서 대답은 YES입니다. 카메라가 없기 때문에 실제로 시뮬레이터에서 충돌합니다 :) 테스트를 위해 아이폰에서 잘 작동했습니다. 소스 유형 테스트에서 알 수 있듯이 앱을 카메라 기기에만 독점으로 사용하려는 경우 정말 필요합니다. –

+0

'still-camera'키를 사용하여 필요한 장치 기능을 info.plist에 지정할 수 있다고 생각합니다. 그러나 isSourceTypeAvailable 메서드에 대한 문서에 "카메라가 이미 사용중인 경우이 메서드는 NO를 반환합니다"라는 말처럼 "이 방법을 사용하는 것이 좋습니다. 즉, 장치에 카메라가 있으면 이것이 의미하지는 않습니다 원하는 때마다 사용할 수 있습니다. 따라서 오류를 부드럽게 처리하면 사용자가 감사 할 것입니다. –

+0

하지만 isSourceTypeAvailable : UIImagePickerControllerSourceTypeCamera는 YES를 반환합니다. 여전히 시뮬레이터에서 충돌합니다. – shiami

관련 문제