26 Stimmen

UIDocumentInteractionController fügt dem Menü benutzerdefinierte Aktionen hinzu (z. B. E-Mail, Speichern unter Fotos)

Ich habe begonnen, UIDocumentInteractionController für eine neue App zu verwenden, aber ich frage mich, wie man zusätzliche Aktionen zum Aktionsmenü hinzufügen, die Sie auf dem Vorschaubildschirm erhalten?

Es scheint, dass das Menü nur Apps auflistet, die für einen bestimmten Url-Typ registriert sind, und ich sehe, dass PRINT auf iOS4.2 angezeigt wird. Ich möchte per E-Mail senden und speichern, um Fotos hinzufügen, aber nicht sehen, eine Möglichkeit, dieses Menü zu erweitern. Ich kann die Aktionen, die ich will OK Code, es ist nur das Hinzufügen von ihnen in das Menü, das unmöglich scheint?

Übersehe ich etwas Offensichtliches?

2voto

Sie haben recht, Dies sind die Methoden

- (BOOL) documentInteractionController: (UIDocumentInteractionController *) controller performAction: (SEL) action

- (BOOL) documentInteractionController: (UIDocumentInteractionController *) controller canPerformAction: (SEL) action

Die unterstützten Aktionsselektoren für diese Methoden sind Kopie: y drucken: .

2voto

alasker Punkte 309

Ich kann noch nicht kommentieren, also antworte ich stattdessen :-)

Sie sollten das QuickLook-Framework einmal ausprobieren. In meinem Fall habe ich überall gesucht, wie man den UIDocumentInteractionController anpassen kann, und habe nichts Nützliches gefunden. Ich erreichte, was ich wollte (in meinem Fall, mit einer Vorschau "Ansicht" innerhalb einer anderen Ansicht) mit QuickLook. Hier ist ein Beispielcode, um einen QLPreviewController als Child-Controller zu haben (wobei der Parent-Controller frei erstellt werden kann, was in Ihrem Fall der Fall ist).

self.previewController = [[QLPreviewController alloc]init];
self.previewController.delegate=self;
self.previewController.dataSource=self;
[self addChildViewController:self.previewController];
self.previewController.view.frame = CGRectMake(0, 0, self.previewView.frame.size.width, self.previewView.frame.size.height);
[self.previewView addSubview:self.previewController.view];
[self.previewController didMoveToParentViewController:self];

Sie werden auch einige Delegierte benötigen: QLPreviewControllerDataSource und QLPreviewControllerDelegate

und auch einige, die umgesetzt werden müssen:

- (id <QLPreviewItem>)previewController: (QLPreviewController *)controller previewItemAtIndex:(NSInteger)index

NSURL zur Ressource zurückgeben

- (NSInteger) numberOfPreviewItemsInPreviewController: (QLPreviewController *) controller

Rückgabe der Anzahl der Elemente für die Vorschau (in meinem Fall 1)

2voto

DominicusPlatus Punkte 129

Zur Anzeige von E-Mail- und "Speichern unter"-Optionen sollten Sie Folgendes verwenden

- (BOOL)presentOptionsMenuFromRect:(CGRect)rect inView:(UIView *)view animated:(BOOL)animated;

o

- (BOOL)presentOptionsMenuFromBarButtonItem:(UIBarButtonItem *)item animated:(BOOL)animated;

Wie in UIDocumentInteractionController.h beschrieben:

/ Dies ist die Standardmethode, die Sie aufrufen sollten, um Ihren Benutzern die Möglichkeit zu geben, das Dokument schnell anzusehen, zu öffnen oder zu kopieren. /

Bei der Verwendung von

// Zeigt ein Menü an, über das der Benutzer das Dokument in einer anderen Anwendung öffnen kann.

- (BOOL)presentOpenInMenuFromBarButtonItem:(UIBarButtonItem *)item animated:(BOOL)animated;

o

- (BOOL)presentOpenInMenuFromRect:(CGRect)rect inView:(UIView *)view animated:(BOOL)animated;

E-Mail, SMS und "In Foto/Video speichern" werden nicht angezeigt.

Wenn andere Aktionen erforderlich sind, die nicht erkannt werden, sollten Sie UIActionSheet verwenden.

0voto

Fabiosoft Punkte 1042

Ich könnte ein einfaches UIActionSheet oder besser ein Popover vorschlagen, wenn Sie auf dem iPad in einer Tabellenansicht mit Anwendungen sind und Sie manuell Druck, E-Mail und alles andere hinzufügen können.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X