2013-04-22 44 views
6

Tôi gặp sự cố trong ứng dụng của mình. Sau khi nhận được một số thống kê, tôi tạo một tệp PDF và tôi muốn hiển thị UIActivityViewController với các tùy chọn "Mở trong iBooks" và "Gửi qua thư" chủ yếu (những người khác như "Mở trong Dropbox" sẽ là tuyệt vời).UIActivityViewController không hiển thị tùy chọn "Mở trong iBooks"

Vâng điều là trước khi cố gắng sử dụng UIActivityViewController, tôi đã sử dụng UIDocumentInteractionController, với đoạn mã sau:

self.docController = [UIDocumentInteractionController interactionControllerWithURL:url]; 
self.docController.delegate = self; 
[_docController presentOpenInMenuFromRect:_openInIBooksButton.bounds inView:self.openInIBooksButton animated:YES]; 

đâu url là một con đường như /Documents/../statistics.pdf. Nó hoạt động, nó cho thấy một popover với các nút mở trong iBooks và mở trong Dropbox, nhưng không gửi qua thư. Bây giờ tôi đã thay đổi nó bằng mã sau:

NSArray* itemsToShare = [NSArray arrayWithObjects:pdfData, nil]; 
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:itemsToShare applicationActivities:nil]; 
activityVC.excludedActivityTypes = @[UIActivityTypeCopyToPasteboard]; //or whichever you don't need 
[self presentViewController:activityVC animated:YES completion:nil]; 

Trường hợp pdfData là đối tượng NSData. Và nó hoạt động quá, nhưng bây giờ nó cho thấy tùy chọn gửi nó qua email, nhưng không phải là tùy chọn iBooks. Tôi sẽ đi vì tôi không tìm ra lý do của hành vi đó và tôi cần hai lựa chọn, iBooks và Mail.

Tôi không biết liệu nó có liên quan gì đến thực tế là UIDocumentInteractionController có đường dẫn kết thúc bằng .pdf và UIActivityViewController chỉ có đối tượng NSData. Nhưng tôi không thể tìm ra giải pháp cho điều đó.

Ai đó đã phát hiện ra sự cố đó trước đây?

Cảm ơn bạn rất nhiều.

+0

Bạn đã thử 'presentOptionsMenuFromBarButtonItem' của UIDocumentInteractionController chưa? - Và tôi nghĩ rằng đối số 'initWithActivityItems' của UIActivityViewController cũng chấp nhận các mục NSURL trong mảng, điều đó có thể hữu ích. –

+0

Cảm ơn bạn đã trả lời, nhưng nếu bạn đặt một url vào mảng, nó chỉ hiển thị gửi qua thư và xuất bản trên tùy chọn twitter, và nếu bạn nhấn vào gửi qua thư, nó sẽ mở trình soạn thư với văn bản chứa url, nhưng mà không đính kèm tập tin .. – diegomen

+0

OK, đó chỉ là một ý tưởng! Điều gì về presentOptionsMenuFromBarButtonItem? –

Trả lời

10

Khi bạn sử dụng presentOpenInMenuFromRect:inView:animated: bạn chỉ nhận được danh sách ứng dụng có thể hoạt động với tệp đã cho.

Điều bạn muốn sử dụng là presentOptionsMenuFromRect:inView:animated: cung cấp cho bạn các tùy chọn mà bạn đang tìm kiếm.

+0

Cảm ơn bạn rất nhiều, nhưng nếu bạn mở một PDF đính kèm trong một thư, bạn xem trước nó và bấm vào nút chia sẻ, một cửa sổ bật lên được hiển thị và nó có các tùy chọn Mở trong iBooks và gửi qua thư, làm thế nào là nó có thể? – diegomen

+0

Thay vì sử dụng phương thức 'presentOpenInMenuFromRect:', sử dụng phương thức presentOpenInMenuFromRect: 'của' UIDocumentInteractionController'. – rmaddy

+0

Xin lỗi, nhưng bạn đã nói điều tương tự ...? về phương pháp nào bạn đang nói về để thay thế presentOpenInMenuFromRect:? – diegomen