Kann mir jemand sagen, wie ich die Drucktaste QLPreviewController entfernen kann? Möchte auch ausschneiden / einfügen / kopieren deaktivieren.
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.
Wenn Sie QLPreviewController
ableiten und dann diese eine Methode hinzufügen:
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.
Funktioniert für mich anstelle von [[self navigationItem] setRightBarButtonItem:nil];
Ich muss auch den Navigationseintrag von Momentan benutze ich diesen Weg: Es scheint verdrahtet, funktioniert aber. QLPreviewController
anpassen. Genau wie rbrown , wird XPC verwendet und wir können keine benutzerdefinierten Elemente mehr in viewDidLoad
oder viewWillAppear
.
UIViewController
QLPreviewController
der neuen Klasse hinzu
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!
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
Tags und Links ios pdf qlpreviewcontroller