2012-11-14 16 views
8

पर "आईबुक में खोलें" जोड़ें, मैं साइट के लिए एक रैपर एप्लिकेशन विकसित कर रहा हूं। असल में, यह UIWebView में किसी साइट का मोबाइल संस्करण खोलता है। साइट पर कुछ लिंक पीडीएफ को इंगित करते हैं।UIWebView

जब सफारी में एक ही साइट खोली जाती है और पीडीएफ के लिंक को पीडीएफ पर "ओपन इन आईबुक" के साथ एक अच्छा काला पट्टी दिखाया जाता है। नीचे दिए गए चित्र पर की तरह:

enter image description here

मैं अपने अनुप्रयोग में एक ही लग रही धारी को लागू कर सकता है?

संपादित करें:

मैं नहीं हूँ कैसे पारदर्शी पृष्ठभूमि पर एक काले रंग की बटन बनाने के लिए के बारे में पूछ।

मैं पूरी कार्यप्रवाह प्रजनन में दिलचस्पी है: एक पीडीएफ

  • एक पट्टी (देखें) करने के लिए

    • उपयोगकर्ता नेविगेट करता पॉपअप यदि और केवल यदि है iBooks एप्लिकेशन (या किसी अन्य PDF व्यूअर) स्थापित।
    • उस ऐप में पॉपअप स्थानान्तरण दस्तावेज़ में एक बटन टैप करना और ऐप खुलता है।
  • +0

    देखें (धारी?) या बटन की कार्यक्षमता:

    आप वैकल्पिक रूप से निम्नलिखित प्रतिनिधि तरीकों को लागू कर सकते हैं? –

    +0

    @ Daij-Djan कृपया – Bobrovsky

    +0

    पर सवाल देखें जो मुझे डर था: डी जेके आप ibooks url योजना –

    उत्तर

    24

    अगर iBooks स्थापित किया गया है आप कॉल कर सकते हैं देखने के लिए:

    BOOL iBooksInstalled = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"ibooks://"]]; 
    

    आप (क्यों केवल iBooks के लिए सीमा?;) आवेदनों की की एक सूची पेश कर सकते हैं) का उपयोग:

    //use the UIDocInteractionController API to get list of devices that support the file type 
    NSURL *pdfURL = // your pdf link. 
    UIDocumentInteractionController *docController = [UIDocumentInteractionController interactionControllerWithURL:pdfURL]; 
    
    //present a drop down list of the apps that support the file type, click an item in the list will open that app while passing in the file. 
    [docController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES]; 
    

    ध्यान दें कि यह आईओएस सिम्युलेटर पर काम नहीं करता है जब तक आप एक ऐप नहीं बनाते जो पीडीएफ पढ़ता है!

    यदि आप वास्तव में केवल आईबुक में पीडीएफ खोलने का विकल्प देना चाहते हैं, तो आप फ़ाइल के यूआरएल को @ "ibooks: //" योजना या अन्य दो योजनाओं में से एक में जोड़ने का प्रयास करना चाहेंगे कि iBooks प्रदान करते हैं (जो आईबुक स्टोर में पुस्तकों के लिए काम करते हैं लेकिन मुझे यकीन नहीं है कि यह अन्य यूआरएल के लिए भी काम करता है) जो @ "itms-books: //" और @ "itms-bookss: //" हैं।

    NSURL *iBooksURLScheme = [NSURL URLWithString:@"ibooks://"]; 
    NSString *fileURLString = // your file URL as *string* 
    NSURL *finalURL = [iBooksURLScheme URLByAppendingPathComponent:fileURLString]; 
    
    [[UIApplication sharedApplication] openURL:finalURL]; 
    
    +0

    विस्तृत उत्तर के लिए धन्यवाद। – Bobrovsky

    +0

    मुझे पता है कि यह एक पुराना सवाल है, लेकिन अगर आप एआरसी के तहत इस तरह से उपयोग करते हैं तो आपको एक त्रुटि मिलेगी। self.docInteractionController = [UIDocumentInteractionController इंटरैक्शन नियंत्रक WithURL: url]; –

    +1

    बस एक तरफ ध्यान दें: UIDocumentInteractionController के लिए यूआरएल स्थानीय होना चाहिए, फ़ाइल यूआरएल (जिसे यूडीवेब व्यू में पीडीएफ को डाउनलोड करने के लिए उपयोग नहीं किया जाता है)। तो आपको पहले पीडीएफ एक्सटेंशन के साथ डाउनलोड किए गए पीडीएफ डेटा को सहेजने की जरूरत है (अपनी दस्तावेज़ निर्देशिका में सबसे अच्छा) और फिर [NSURL fileURLWithPath: pdfPath] के साथ यूआरएल बनाएं। – Lukasz

    1

    एक समाधान है कि मेरी समस्या का समाधान हो मैं एक महान उदाहरण here पाया के लिए (। मेरे पिछले जवाब कोड क्षमा याचना शामिल नहीं किया था के रूप में फिर से उत्तर दिया): आप तो कुछ ऐसा कर सकते हैं।

    मैंने इसे यहां काट दिया है और चिपकाया है, इससे किसी की मदद मिलती है। absoluteripple.com

    को पूरा श्रेय मानते हुए अपनी कक्षा ViewController कहा जाता है, तो ViewController.h फ़ाइल में:

      
    @interface ViewController : UIViewController 
                { 
                    UIDocumentInteractionController *docController; 
                } 
    

    ViewController में निम्न विधियों में जोड़ें।मी: // - UIDocumentInteraction नियंत्रक की स्थापना की और स्वयं के लिए अपने प्रतिनिधि सेट तो हम कॉलबैक घटनाओं

    - (UIDocumentInteractionController *) setupControllerWithURL:(NSURL *)fileURL 
                                                   usingDelegate:(id <UIDocumentInteractionControllerDelegate>)         interactionDelegate { 
        
                UIDocumentInteractionController *interactionController = 
                [UIDocumentInteractionController interactionControllerWithURL:fileURL]; 
                interactionController.delegate = interactionDelegate; 
        
                return interactionController; 
                } 
    

    // संभाल कर सकते हैं - यहाँ कुंजी उदाहरण विधि presentOptionsMenuFromBarBUttonItem है // - इसे यहाँ माना जाता है है कि वहाँ एक BarButtonItem बुलाया _btnActions

      
    
        - (void)showOptionsMenu 
                { 
                    NSURL *fileURL = [NSURL fileURLWithPath:@"THE_FILE_URL_PATH"]; 
                    docController = [self setupControllerWithURL:fileURL 
                                           usingDelegate:self]; 
                    bool didShow = [docController presentOptionsMenuFromBarButtonItem:_btnActions 
                                                                     animated:YES]; 
                    if (!didShow) { 
                            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" 
                                                                message:@"Sorry. The appropriate apps are not found on this device." 
                                                               delegate:nil 
                                                      cancelButtonTitle:@"OK" 
                                                      otherButtonTitles: nil]; 
                            [alert show]; 
                    } 
                } 
    
    1. एक विधि ऊपर आह्वान करने के लिए जोड़े जब आप एप्लिकेशन आपने इस उदाहरण में करने के लिए फ़ाइल भेज सकता है दिखाना चाहते हैं, एक UIBarButton निम्नलिखित IBActions अप करने के लिए वायर्ड है:
     
        - (IBAction)ActionButtonClicked:(id)sender { 
                [self showOptionsMenu];} 
    

    कि क्या यह। जब बटन पर क्लिक किया जाता है तो एक एक्शन शीट दिखाई देगी (सभी एप्पल के UIDocumentInteractionController क्लास द्वारा संचालित) जो ऐप्स (यदि कोई है) दिखाती है कि आप फ़ाइल भेज सकते हैं।

    - (void)documentInteractionController:(UIDocumentInteractionController *)controller willBeginSendingToApplication:(NSString *)application 
    
    - (void)documentInteractionController:(UIDocumentInteractionController *)controller didEndSendingToApplication:(NSString *)application 
    
    - (void)documentInteractionControllerDidDismissOpenInMenu:(UIDocumentInteractionController *)controller