2011-08-02 27 views
8

क्या कोई मुझे बता सकता है कि QLPreviewController प्रिंट बटन को कैसे निकालें? कट/पेस्ट/कॉपी को भी अक्षम करना चाहते हैं।QLPreviewController प्रिंट बटन को अक्षम करने के लिए कैसे करें

+0

iOS6 के लिए एक समाधान के लिए, यहाँ देखो: http://stackoverflow.com/questions/13083546/qlpreviewcontroller-hide-print-button-in-ios6 मुझे Xcode 8.3 उपयोग करने के लिए – Krumelur

+0

काम ठीक https: // stackoverflow .com/a/45344701/1603380 – Buntylm

उत्तर

6

अद्यतन:

यह नहीं रह गया है आईओएस 6 में काम करता है निगाह डालें किसी अन्य प्रक्रिया में XPC का उपयोग कर चलाता है। अधिक जानकारी के लिए [यहां] [3] देखें। मैं QLPreviewController को अनुकूलित करने के किसी भी तरीके से पूर्ववत नहीं करता हूं। निम्नलिखित जवाब पूर्व आईओएस 6.


आप बस कार्रवाई बटन आप QLPreviewController उपवर्ग की जरूरत को निकालना चाहते हैं के लिए रुचि किसी के लिए भी बनी हुई है। फिर -viewWillAppear: में आपको [[self navigationItem] setRightBarButtonItem:nil]; पर कॉल करके कार्रवाई बटन को हटाने की आवश्यकता है, यह अन्य ऐप्स के साथ फ़ाइलों को साझा करने की क्षमता को भी हटा देगा। यदि आप उस नुकसान के साथ ठीक हैं, तो यह सबसे आसान समाधान है। एक बात यह जानना है कि QLPreviewController अनुकूलित करने का इरादा नहीं है। आप गीथब पर यह repository देख सकते हैं। इसमें एक QLPreviewController है जो पहले ही सुरक्षित रूप से उप-वर्गीकृत है। आपको कार्रवाई बटन को हटाने के लिए केवल एक पंक्ति जोड़ने की आवश्यकता है। रेपो में कुछ अन्य सुविधाएं भी हैं।

बेहतर लेकिन अधिक जटिल समाधान UIDocumentInteractionController का उपयोग करना है। QLPreviewController के बारे में जो मैं समझता हूं उससे यह है कि यह UIDocumentInteractionController का उपयोग करके बनाया गया है। QLPreviewController सामान्य उपयोग और आसान जोड़ के लिए बनाया गया था। UIDocumentInteractionController अधिक नियंत्रण देता है, लेकिन उपयोग करना मुश्किल है। मैं पर्याप्त रूप से वर्णन नहीं कर सकता कि इसका उपयोग कैसे करें। मैं दस्तावेज इंटरैक्शन नियंत्रक को समझने डब्ल्यूडब्ल्यूडीसी 2010 सत्र 106 की जांच करने की सलाह देता हूं।

कट/कॉपी/पेस्ट को अक्षम करने के लिए, आप QLPreviewController के साथ ऐसा नहीं कर सकते हैं। आप UIDocumentInteractionController के साथ ऐसा करने में सक्षम हो सकते हैं, लेकिन मैं उस पर भरोसा नहीं करता। आप कौन सी फाइलों को प्रदर्शित करना चाहते हैं, इस पर निर्भर करते हुए, आप पूरी तरह से कस्टम कार्यान्वयन करने में सक्षम हो सकते हैं, लेकिन यह बहुत काम है। सादे पाठ, फोटो, वीडियो और पीडीएफ के लिए दर्शकों को बनाना अपेक्षाकृत आसान है। कार्यालय के दस्तावेज इसके लायक से अधिक प्रयास हैं।

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

मैं तो आप इसे अपने आप को करने के बारे में चिंता करने की ज़रूरत नहीं है सही RBFilePreviewer में कार्रवाई बटन को हटाने की क्षमता का निर्माण किया है।

+0

धन्यवाद। जब मैंने सेट किया है तो केवल काम किया गया है RightBarButtonItem: "viewDidAppear" में शून्य –

+1

-viewDidAppear इसे रखने के लिए एक अजीब जगह है। क्या यह -विल विल्लएपियर में काम करता है? यदि संभव हो तो यह बेहतर होगा। साथ ही, क्या आप मेरे उत्तर को सही के रूप में अपनाने/स्वीकार करने जा रहे हैं? – rbrown

+1

यह पता चला है कि कार्रवाई बटन को हटाने के रूप में मैंने सोचा उतना छोटा नहीं है। QLPreviewController के नीचे बहुत सारे quirks है। RBFilePreviewer में अब उस सुविधा का निर्माण किया गया है और सभी अलग-अलग मामलों का ख्याल रखता है। इसके अलावा, मैंने मूल QLPreviewController में "बग" तय किया है जो इसे सामान्य रूप से प्रस्तुत किए जाने के बजाए दस्तावेज़ नेविगेशन बार नहीं दिखाता है। आप मेरे डेमो भंडार में RBFilePreviewer का डेमो भी देख सकते हैं: https://github.com/rob-brown/Demos। – rbrown

2

आप QLPreviewController उपवर्ग और फिर यह एक विधि जोड़ते हैं: उपवर्ग में

-(void)viewDidAppear:(BOOL)animated{ 

    [[self navigationItem] setRightBarButtonItem:nil]; 
} 

, कार्रवाई बटन के ऊपर के रूप में rbrown नोट गायब हो जाएगा। यदि आप viewWillAppear का उपयोग करते हैं तो यह काम नहीं करेगा। साथ ही, ऐसा करने का एक अप्रत्याशित दुष्प्रभाव यह है कि जब आप दृश्य को टैप करते हैं, तो पूर्वावलोकन पर टूलबार अब हर समय प्रकट होता है। बजाय मेरे लिए

+0

यह काम नहीं करता है, साथ ही साथ नियोगेन द्वारा पिछले उत्तर Spranza, यदि आपके पास पूर्वावलोकन करने के लिए कई दस्तावेज हैं - दस्तावेज़ बदलने के बाद सबकुछ इससे पहले बन जाता है। – DisableR

+0

यह आईओएस 8 जीएम बीज के लिए काम नहीं करता है। – Meet

2
-(void)viewDidAppear:(BOOL)animated{ 
    [super viewDidAppear:animated]; 
    [self navigationItem].rightBarButtonItems = nil; 
} 

वर्क्स [[self navigationItem] setRightBarButtonItem:nil];

+0

मेरे लिए भी काम करता है लेकिन तीर अगले और पिछड़े बटन उत्सुकता से दो गायब हो जाते हैं काला खाली बटन। –

1

मैं भी QLPreviewController का रिवाज मार्गदर्शक आइटम की जरूरत है। rbrown की तरह ही, XPC का उपयोग किया जाता है और हम viewDidLoad या viewWillAppear में कस्टम आइटम नहीं जोड़ सकते हैं।

वर्तमान में मैं इस तरह का उपयोग करें:

  1. नया वर्ग

यह वायर्ड लेकिन काम करता है लगता है के लिए QLPreviewController के दृश्य जोड़ने UIViewController

  • का एक नया वर्ग पैदा करते हैं।

  • 0

    मैं इस तरह से इस समस्या का समाधान:

    UIView *viewPreviewController; //from storyboard 
    
    QLPreviewController *previewController = [[QLPreviewController alloc] init]; 
    previewController.delegate = self; 
    previewController.dataSource = self; 
    previewController.currentPreviewItemIndex = 0; 
    [previewController.view setFrame:CGRectMake(0,0, self.viewPreviewController.frame.size.width, self.viewPreviewController.frame.size.height)]; 
    [previewController.navigationController setHidesBarsOnTap:YES]; 
    previewController.navigationItem.rightBarButtonItems = nil; 
    
    [self.viewPreviewController addSubview:previewController.view]; 
    

    मैं एक UIView में previewController को शामिल नहीं किया था, तो यह काम नहीं होता!

    0

    मैं निष्क्रिय करने के लिए एक समाधान पाया है QLPreviewController में rightBarButtonItem कि iOS8 और iOS9

    में मेरे लिए ठीक काम करता है

    आप बस QLPreviewController उपवर्ग और निम्न विधियों ओवरराइड करने के लिए है, तो मूल QLPreviewController

    के अपने उपवर्ग का उपयोग करने के बजाय जरूरत
    - (void)viewDidLoad { 
        [super viewDidLoad]; 
    
        // When coming back from background we make sure the share button on the rightbBarButtonItem is disabled 
        __weak typeof(self) weakSelf = self; 
        [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidBecomeActiveNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) { 
         weakSelf.navigationItem.rightBarButtonItem.enabled = NO; 
        }]; 
    } 
    
    - (void)dealloc { 
        [[NSNotificationCenter defaultCenter] removeObserver:self]; 
    } 
    
    - (void)viewWillAppear:(BOOL)animated { 
        [super viewWillAppear:animated]; 
    
        self.navigationItem.rightBarButtonItem.enabled = NO; // Disable the share button 
    } 
    
    - (void)viewDidAppear:(BOOL)animated { 
        [super viewDidAppear:animated]; 
    
        self.navigationItem.rightBarButtonItem.enabled = NO; // Disable the share button 
    } 
    
    संबंधित मुद्दे