2013-08-13 10 views
5

che sto inviando una e-mail, con un allegato PDF, durante l'utilizzo UIDocumentInteractionController, in questo modo:Come posso impostare i campi A e Oggetto in un'e-mail inviata da UIDocumentInteractionController?

comincio mostrando il file PDF

-(void)showPDFFile 
{  
    NSURL *url = [NSURL fileURLWithPath:_filePath]; 

    if (url) { 
     _documentInteractionController = 
      [UIDocumentInteractionController interactionControllerWithURL:url]; 

     [_documentInteractionController setDelegate: self]; 
     [_documentInteractionController presentPreviewAnimated:YES]; 
    } 
} 


- (UIDocumentInteractionController *)setupControllerWithURL:(NSURL *)fileURL 
               usingDelegate:(id <UIDocumentInteractionControllerDelegate>)interactionDelegate { 

    UIDocumentInteractionController *interactionController = 
     [UIDocumentInteractionController interactionControllerWithURL: fileURL]; 

    [interactionController setDelegate: interactionDelegate]; 
    return interactionController; 
} 

Quando viene visualizzato il file PDF, l'utente fa clic Viene visualizzata l'opzione "Esporta" e viene visualizzata la vista "Apri con" di iOS.

Facendo clic sull'e-mail si apre ora un controller di visualizzazione pronto per inviare un messaggio di posta elettronica.

Come impostare i campi A: CC/BCC e Oggetto in modo programmatico?

Grazie!

+0

sono si MFMailComposeViewController utilizzare per presentare vista e-mail ?? – Suryakant

+0

Non lo sono. UIDocumentInteractionController sta facendo le cose per me! Immagino che UIDocumentInteractionController sia delegato a MFMailComposeViewController. In qualsiasi altro scenario sarei delegato a MFMailComposeViewController e gestirò le cose da lì. – nmdias

+3

Sfortunatamente l'API non supporta quello che vuoi. Idealmente dovresti essere in grado di usare la proprietà 'annotation' di' UIDocumentInteractionController' ma non sembra che il compositore di posta utilizzi la proprietà (almeno non c'è documentazione che indichi che può essere fatto). – rmaddy

risposta

2

È possibile assegnare soggetto della posta elettronica utilizzando la proprietà UIDocumentInteractionControllername:

_documentInteractionController.name = @"My custom mail subject"; 

Purtroppo questo è l'unico attributo che ho capito che può essere configurato tramite UIDocumentInteractionController.

+0

Sfortunatamente, questo non funziona .. – GenieWanted

+0

@GenieWanted funziona per me. –

0

Purtroppo la risposta di Florians non ha funzionato per me. Dovevo copiare il file localmente e quindi impostare l'URL sul file locale. L'impostazione del nome modificava solo il titolo nell'anteprima, non il nome file o l'oggetto nell'e-mail.

cioè

NSFileManager* fileManager = [NSFileManager defaultManager]; 

NSError* err = nil; 

NSString* newPath = [appDocumentsFolder stringByAppendingPathComponent:name]; 
if (![fileManager copyItemAtPath:[[NSURL URLWithString:path] path] toPath:newPath error:&err]) { 
    // handle error 
} 

NSURL *fileURL = [NSURL fileURLWithPath:newPath]; 

_controller = [UIDocumentInteractionController interactionControllerWithURL:fileURL];