Probleme beim Hinzufügen von benutzerdefinierten Aktivitäten zu UIActivityController

8

Ich versuche, eine benutzerdefinierte Aktivität zu den Standardaktivitäten (Print, Mail, FaceBook, etc.) zu implementieren, aber jetzt nur den Standarddruck (für AirPrint) und meinen eigenen benutzerdefinierten Druck durch eine direkte Methode. Ich vermisse offensichtlich etwas Grundlegendes, da keine der Methoden in meiner benutzerdefinierten Klasse jemals aufgerufen wird. Fürs Erste habe ich nur eine NSLog-Anweisung, um die aufrufende Sequenz herauszufinden und das Framework zum Funktionieren zu bringen.

Der folgende Code ist mein Test für die benutzerdefinierte Aktivitätsklasse:

%Vor%

Und die .m

%Vor%

Und das ist der Aufruf in der Hauptroutine:

%Vor%

Wie gesagt, keine der Methoden in der benutzerdefinierten Klasse wird aufgerufen, aber die Symbole für E-Mail, Nachricht und Kopie werden im Aktivitätsblatt und nicht im Drucken-Symbol angezeigt. Ich erwartete nur das System Print-Symbol (und mein eigenes).

Wenn ich den oberen Block der Anweisungen auskommentiere (und die NSArray * activityItems ............) weiter unten auslasse, werden die Symbole für E-Mail, Nachricht, Drucken und Kopieren des Systems angezeigt. In diesem Experiment denke ich, dass ich verschiedene Methoden mische, indem ich meinen eigenen Formatierer erstelle, aber das schien der Vorschlag auf der WWDC 2012 zu sein?

Wenn ich die Zeile mit 'excludeActivityTypes' auskommentiere, erhalte ich nur das Symbol Drucken des Systems.

Ich würde jede Eingabe begrüßen, die mir hilft, dies herauszufinden.

Und wenn jemand einen Beispielcode kennt, um das zu tun, was ich will, wäre das großartig.

Bearbeiten: Aktualisierter Code in meinen Arbeitscode.

    
bjarne 05.10.2012, 18:19
quelle

3 Antworten

7

Ich habe meine Haare über die UIActivity gezogen und auch diesen letzten Tweek, es muss wirklich besser von Apple erklärt werden und mehr Features hinzugefügt haben; Versuchen Sie Folgendes:

PrintActivity.h

%Vor%

PrintActivity.m

%Vor%

Vergessen Sie nicht, auch diese zwei Dateien zu erstellen:

PrintProvider.h

%Vor%

PrintProvider.m

%Vor%

Jetzt können wir es endlich nennen:

%Vor%     
klcjr89 07.10.2012 18:18
quelle
3

@ troop231 - großartige Antwort und sehr hilfreich.

Das Einzige, was ich hinzufügen würde, ist sicher zu stellen, dass die Operation abgeschlossen ist oder die Completion-Routine wird nicht aufgerufen und das Popover wird nicht abgewiesen. Etwas wie:

%Vor%     
jbbenni 21.03.2013 21:46
quelle
-1

Danke für Ihre Hilfe, Jungs! Und für das Aktivitätsbild scheint es, als müssten wir folgendes Bild von Apple-Dokumenten bereitstellen:

  

Der Alphakanal des Bildes wird als Maske verwendet, um das Bild zu erzeugen   endgültiges Bild, das dem Benutzer präsentiert wird. Beliebige Farbdaten im Bild   selbst wird ignoriert. Opaque Pixel haben einen Farbverlauf auf und   Dieser Farbverlauf wird dann auf einen Standardhintergrund gelegt. Also, a   ein vollständig undurchsichtiges Bild würde ein mit einem Gradienten gefülltes Rechteck ergeben. Zum   iPhone und iPod touch, Bilder sollten nicht größer als 43 x 43 Punkte sein   (Dies entspricht 86 mal 86 Pixel für Geräte mit Retina-Displays.)   Für iPad sollten Bilder nicht größer als 55 x 55 Punkte sein   entspricht 110 mal 110 Pixel für iPads mit Retina-Displays.)

    
Fahri Azimov 21.11.2012 07:05
quelle