2012-11-15 3 views
2

번들에 여러 개의 PDF가 포함 된 앱이 있습니다. 사용자가 단추를 누르거나 표 셀을 선택하면 해당 PDF를 UIDocumentInteractionController에 표시하려고합니다.왜 로컬 PDF가 단 하나의 장치에서 UIDocumentInteractionController를 그릴 수 없습니까?

내 컴퓨터와 대부분의 테스트 컴퓨터에서 잘 작동하지만 한 명의 사용자가 iPhone에서 미리보기를 볼 수 없습니다. 그는 스크린 샷을 보냈습니다. 컨트롤러가 네비게이션 스택에 뷰를 밀어 넣었으며 네비게이션 바에 올바른 파일 이름 옆에 작동하는 "Action"메뉴가 있습니다. 그러나 PDF 자체가 표시되어야하는 큰 공간은 어두운 회색입니다.

새로운 iPhone 6.0.1 버전입니다. 그의 iPad에서 6.0.1을 실행해도 잘 작동합니다. 5.0.1을 실행하는 내 iPhone 4S에서는 정상적으로 작동합니다. "잘 작동합니다"는 파일 이름과 작업 메뉴를 포함하여 정확히 동일한 세부 정보를 푸시합니다. 그러나 큰 회색 공간 대신 ​​PDF의 작동 미리보기가 있습니다.

내보기 컨트롤러 계층 구조는 탭 컨트롤러와 각 탭 내에서 탐색 컨트롤러로 구성됩니다. 네비게이션 스택의 여러 레벨에있는 테이블 뷰 또는 nav 스택의 최상위 레벨에있는 HTML 뷰에서 동일한 문제가 발생합니다.

 self.DIC = [UIDocumentInteractionController interactionControllerWithURL:url]; 
     self.DIC.delegate = self; 
     [self.DIC presentPreviewAnimated:YES]; 

및 구현 만 위임 방법은 : 상기 제어기를 제시하는 코드는 다음과 같다

- (UIViewController *) documentInteractionControllerViewControllerForPreview: (UIDocumentInteractionController *) controller { 
    if (curTabViewController) return curTabViewController; 
    return tabCtrl; 
} 

이 난 tabBarController에 설정된 현재 네비게이션 뷰 컨트롤러를 리턴 할 것이다 : didSelectViewController. DIC가 모달 방식으로 표시되지 않고 탐색 스택에 뷰를 밀어 넣었 기 때문에 작동한다는 것을 알 수 있습니다.

So. UIDocumentInteractionController가 일부 장치에서는 미리보기를 그리지 못하고 다른 장치에서는 미리보기를 그리지 못하는 이유는 무엇입니까?

업데이트 : 디버깅을 위해이 장치를 설정할 수있었습니다. 로그 파일에 나타나는 유일한 단서는이 오류입니다 : 내가 인터 웹을 검색하고, this question 발견했습니다

Cannot find preview item for loaded proxy: <QLPreviewItemProxy: 0x1fd67820> - 
file://localhost/var/mobile/Applications/22DDE4EB-6FB6-4364-87D6-E3680E1E1A9B 
/agilentJAL.app/BuiltInFiles/help/Getting_Started.pdf 

,하지만 내 경우에는 적용하지 않는 것 같습니다. 경로를 두 번 확인했는데 올바른 것으로 나타났습니다 (DIC 메뉴가 문서를 이메일로 보내고 DropBox 등에서 열 수 있음). 다른 오류로 인해이 오류가 발생할 수 있습니다.

+0

디바이스 여유 메모리? (장치를 실제로 다시 시작하기 전까지는 제대로 작동하지 않는 두 개의 응용 프로그램이 있습니다. 그 응용 프로그램은 상당히 큰 응용 프로그램 이었지만) –

+0

장치를 다시 부팅해도 도움이되지 않았습니다. –

+0

여기 흥미로운 점이 있습니다 ... 내 documentInteractionControllerViewControllerForPreview 메소드를 변경하여 항상 tabCtrl (내 컨트롤러 계층 구조의 루트 인 UITabController)을 반환하면 작동합니다. 오류가 없으며 미리보기가 표시됩니다. 그러나 물론 그것은 네비게이션 스택과 잘 어울리는 대신 모달로 튀어 나오게됩니다. 어쩌면 나는 그것을 받아 들여야 만하지만,이 점을 제외하고는 다른 모든 테스트 장치에서 잘 작동하는 것 같아요. –

답변

0

탭 막대 대신 탐색 컨트롤러에 액세스 해보세요. 이것은 나를 위해 문제를 해결했다. inInteractionControllerViewControllerForPreview : ​

if let navigationController = self.navigationController { 
    return navigationController 
} else { 
    return self 
} 
관련 문제