So deaktivieren Sie QLPreviewController print Button

9

Kann mir jemand sagen, wie ich die Drucktaste QLPreviewController entfernen kann? Möchte auch ausschneiden / einfügen / kopieren deaktivieren.

    
ricardo somarriba 02.08.2011, 20:32
quelle

6 Antworten

6

UPDATE:

Dies funktioniert nicht mehr in iOS 6. Die Schnellansicht wird in einem anderen Prozess mit XPC ausgeführt. Siehe [hier] [3] für weitere Details. Ich sehe keine Möglichkeit, QLPreviewController anzupassen. Die folgende Antwort bleibt für alle, die sich für Pre-iOS 6 interessieren.

Wenn Sie die Aktionsschaltfläche einfach entfernen möchten, müssen Sie die Unterklasse QLPreviewController erstellen. Dann müssen Sie in -viewWillAppear: die Aktionsschaltfläche entfernen, indem Sie [[self navigationItem] setRightBarButtonItem:nil]; aufrufen. Dadurch wird auch die Möglichkeit zum Teilen von Dateien mit anderen Apps entfernt. Wenn Ihnen dieser Verlust gut geht, ist das die einfachste Lösung. Eine Sache, auf die Sie achten sollten, ist, dass QLPreviewController NICHT dazu gedacht ist, angepasst zu werden. Sie können dieses Repository auf Github herunterladen. Es enthält einen QLPreviewController, der bereits sicher unterklassifiziert ist. Sie müssen nur die eine Zeile hinzufügen, um die Aktionsschaltfläche zu entfernen. Das Repo hat auch einige andere Annehmlichkeiten.

Die bessere, aber kompliziertere Lösung ist die Verwendung von UIDocumentInteractionController . Was ich von QLPreviewController verstehe ist, dass es mit UIDocumentInteractionController erstellt wurde. QLPreviewController wurde für den allgemeinen Gebrauch und die einfache Addition erstellt. UIDocumentInteractionController gibt viel mehr Kontrolle, ist aber schwieriger zu verwenden. Ich kann nicht genug beschreiben, wie man es hier benutzt. Ich empfehle, die WWDC 2010-Sitzung 106 Understanding Document Interaction Controller zu lesen.

Was das Deaktivieren von cut / copy / paste betrifft, können Sie das nicht mit QLPreviewController tun. Das könntest du vielleicht mit UIDocumentInteractionController machen, aber ich würde nicht darauf zählen. Je nachdem, welche Dateien Sie anzeigen möchten, können Sie möglicherweise eine vollständig benutzerdefinierte Implementierung durchführen, aber das ist eine Menge Arbeit. Es ist relativ einfach, Zuschauer für einfachen Text, Fotos, Videos und PDFs zu machen. Office-Dokumente sind mehr Mühe als es wert ist.

BEARBEITEN:

Ich habe die Möglichkeit entwickelt, die Aktionsschaltfläche direkt in RBFilePreviewer zu entfernen, damit du dir keine Sorgen machen musst, es selbst zu tun.

    
rbrown 03.08.2011 02:53
quelle
2

Wenn Sie QLPreviewController ableiten und dann diese eine Methode hinzufügen:

%Vor%

In der Unterklasse verschwindet die Aktionsschaltfläche wie oben. Dies funktioniert nicht, wenn Sie viewWillAppear verwenden. Ein unerwarteter Nebeneffekt ist auch, dass die Symbolleiste in der Vorschau jetzt immer angezeigt wird und nicht nur, wenn Sie auf die Ansicht tippen.

    
millport 15.10.2011 14:20
quelle
2
%Vor%

Funktioniert für mich anstelle von [[self navigationItem] setRightBarButtonItem:nil];

    
Andrea Leganza 06.06.2012 08:51
quelle
1

Ich muss auch den Navigationseintrag von QLPreviewController anpassen. Genau wie rbrown , wird XPC verwendet und wir können keine benutzerdefinierten Elemente mehr in viewDidLoad oder viewWillAppear .

Momentan benutze ich diesen Weg:

  1. Erstellen Sie eine neue Klasse von UIViewController
  2. fügen Sie die Ansicht von QLPreviewController der neuen Klasse hinzu

Es scheint verdrahtet, funktioniert aber.

    
scorpiozj 13.10.2013 08:37
quelle
0

Ich löse dieses Problem auf diese Weise:

%Vor%

Wenn ich den previewController nicht in eine UIView integriert hätte, dann würde es nicht funktionieren!

    
Alessio Campanelli 17.11.2014 16:51
quelle
0

Ich habe eine Lösung gefunden, um die rightBarButtonItem in QLPreviewController zu deaktivieren, die für mich in iOS8 und iOS9 funktioniert

Sie müssen einfach QLPreviewController ableiten und die folgenden Methoden überschreiben und dann Ihre Unterklasse anstelle des ursprünglichen QLPreviewController

verwenden %Vor%     
Fmessina 22.01.2016 08:57
quelle

Tags und Links