Wie zu Deaktivieren QLPreviewController Schaltfläche drucken
Kann mir jemand sagen, wie man die entfernen QLPreviewController print-Taste? Möchte auch deaktivieren Ausschneiden/einfügen/kopieren.
- Eine Lösung für iOS6, schau mal hier: stackoverflow.com/questions/13083546/...
- funktionieren bei mir mit Xcode 8.3 stackoverflow.com/a/45344701/1603380
Du musst angemeldet sein, um einen Kommentar abzugeben.
UPDATE:
Diese funktioniert nicht mehr in iOS 6. Quick Look läuft in einem anderen Prozess unter Verwendung von XPC. Sehen Sie [hier][3] für weitere details. Ich denke keiner Weise anpassen QLPreviewController. Die folgende Antwort bleibt für alle, die Interesse für die vor-iOS-6.
Wenn Sie möchten, entfernen Sie einfach die Taste Aktion, die Sie benötigen, um eine Unterklasse
QLPreviewController
. Dann in-viewWillAppear:
müssen Sie die Aktion-Taste, durch Aufruf[[self navigationItem] setRightBarButtonItem:nil];
Dies wird auch entfernen, die Fähigkeit zum teilen von Dateien mit anderen apps. Wenn Sie in Ordnung mit, dass ein Verlust, dann ist das die einfachste Lösung. Eine Sache zu beachten ist, dassQLPreviewController
soll NICHT angepasst werden. Sie können sich diese repository auf Github. Es enthält eine QLPreviewController, dass ist schon sicher, untergeordnet. Sie müssen nur fügen Sie eine Zeile zu löschen, die Taste Aktion. Die repo hat auch einige andere Vorteile.Die bessere, aber kompliziertere Lösung ist die Verwendung
UIDocumentInteractionController
. Von dem, was ich verstehenQLPreviewController
ist, dass es gebaut mitUIDocumentInteractionController
.QLPreviewController
wurde für den Allgemeinen Gebrauch und einfach neben.UIDocumentInteractionController
gibt viel mehr Kontrolle, aber ist schwieriger zu benutzen. Ich kann nicht genug beschreiben, wie es zu benutzen hier. Ich empfehle Auschecken der WWDC 2010 session 106 Grundlegendes Dokument-Interaktion-Controller.Als für das deaktivieren Ausschneiden/kopieren/einfügen, Sie können nicht tun, mit
QLPreviewController
. Sie könnten in der Lage, das zu tun, mitUIDocumentInteractionController
, aber ich würde nicht darauf zählen. Je nachdem, welche Dateien Sie anzeigen möchten, und Sie können eine vollständig benutzerdefinierte Implementierung, aber das ist eine Menge Arbeit. Es ist relativ einfach zu machen-Viewer für text, Fotos, videos und PDF-Dateien. Office-Dokumente sind, mehr Mühe, als es Wert ist.EDIT:
Habe ich gebaut, die Fähigkeit, entfernen Sie die Aktion-Taste, rechts in
RBFilePreviewer
so dass Sie nicht haben, um sorgen über das tun Sie es selbst.Wenn Sie eine Unterklasse
QLPreviewController
und fügen Sie diesem eine Methode:in der Unterklasse, der action-button wird verschwinden, wie rbrown Anmerkungen oben. Das wird nicht funktionieren, wenn Sie
viewWillAppear
. Auch ein unerwarteter Nebeneffekt dabei ist, dass die Symbolleiste über der Vorschau erscheint jetzt bei allen mal, anstatt nur, wenn Sie auf die anzeigen.Funktioniert bei mir statt
[[self navigationItem] setRightBarButtonItem:nil];
Brauche ich auch, um benutzerdefinierte der navigaiton Element
QLPreviewController
. Wie rbrown sagte, XPC verwendet wird und wir nicht mehr können benutzerdefinierte Einträge hinzufügen inviewDidLoad
oderviewWillAppear
.Derzeit nutze ich diesen Weg:
UIViewController
QLPreviewController
auf die neue KlasseScheint es WLAN funktioniert aber.
Ich dieses problem lösen auf diese Weise:
Wenn musste ich nicht übernehmen previewController in einer UIView, dann würde es nicht funktionieren!
Habe ich eine Lösung gefunden, um deaktivieren Sie die
rightBarButtonItem
imQLPreviewController
, die funktioniert gut für mich in iOS8 und iOS9Müssen Sie einfach in der Unterklasse
QLPreviewController
und überschreiben der folgenden Methoden, verwenden Sie dann Ihre Unterklasse anstelle der ursprünglichenQLPreviewController
diese Arbeit für mich . Sie haben, um debugg Kind navigation controller
Diese Unterklasse arbeitet mit Swift 4.2 und iOS 12. Es verwendet einen trick, um sicherzustellen, dass das teilen-Symbol ausgeblendet ist, ohne zu blinken in den Augen des Benutzers.