2013-10-25 3 views
2

Unity 앱에서 UIImagePickerController을 사용합니다. 사용자가 "완료"를 누르면 때때로 고정됩니다. 3 번에 한 번씩 3GS에서 자주 발생하지만 iPhone 5에서 가끔 멈추는 경우가 있습니다.이 버그는 4.3에서 7.0으로 iOS에 나타납니다. 나는 어떤 요인들이 동결과 관련이 있는지를 결정할 수 없었다. 나는이 동결을 얻을 때 기억 경고를 얻지 않는다.UIImagePickerController 가끔 얼어 붙음

로그에 오류가 없으며 아무런 오류도 없습니다. 앱은 정상적으로 UIImagePickerController 뒤에서 계속해서 실행됩니다. 콘솔에는 "파일 쓰기 데이터/개인/var/mobile/Media/PhotoData 거부"와 같은 많은 메시지가 있지만 그 중 일부는 동결 상태 일 때와 모든 것이 작동 할 때 간혹 나타날 수 있습니다 다 좋아. 여기

내가 선택기를 표시하는 방법은 다음과 같습니다

- (void)showPicker:(UIImagePickerControllerSourceType)type 
{ 
    imgPicker = [[[CustomPhotoPicker alloc] init] autorelease]; 
    imgPicker.delegate = self; 
    imgPicker.sourceType = type; 
    imgPicker.allowsEditing = _pickerAllowsEditing; 

    // wrap and show the modal 
    [self showViewControllerModallyInWrapper:imgPicker]; 

} 

그리고 대리자 메서드 바로 여기에

:

- (void)imagePickerController:(UIImagePickerController*)imgPicker didFinishPickingMediaWithInfo:(NSDictionary*)info 
{ 
    NSLog(@"imagePickerController didFinishPickingMediaWithInfo"); 

    // If the freeze is present, this method isn't called 
} 

- (void)imagePickerController:(UIImagePickerController *)imgPicker 
     didFinishPickingImage:(UIImage *)image 
        editingInfo:(NSDictionary *)editingInfo 
{ 
    NSLog(@"imagePickerController didFinishPickingImage"); 

    // Tried to use deprecated callback. If the freeze is present, this method isn't called either. 
} 

나는 그것이 UIImagePickerController 내부에 버그가 있다고 결정하지만 것 아이폰 OS 개발자 없음이 이 문제가 발생한 Unity를 사용하지 마십시오. 4.3에있는 버그가 이미 수정되었을 것입니다.

답변

1

Thre're는 대안이다 : U는 UnityAppController.mm에 CFRunLoopRunInMode을 소거 할이 같은

- (void)repaintDisplayLink 
{ 
    [_displayLink setPaused: YES]; 
    { 
     static const CFStringRef kTrackingRunLoopMode = CFStringRef(UITrackingRunLoopMode); 
     if (![EtceteraManager picking]) 
     { 
      while (CFRunLoopRunInMode(kTrackingRunLoopMode, kInputProcessingTime, TRUE) == kCFRunLoopRunHandledSource) 
       ; 
     } 
    } 
}