Domanda

Quando passerò una stringa contenente contenuto HTML come elemento di array al metodo UIActivityViewController initWithActivityItems, non lo presenta come HTML nel controller 'Share' selezionato, ma presenta invece la sorgente HTML (cioè il markup anziché interpretarlo).

E mentre posso capire perché lo farebbe per gli obiettivi di condivisione che non supportano il contenuto HTML, non lo interpreterà per le cose come l'e-mail, che fanno (in precedenza questo sarebbe fatto impostando la proprietà isHTMLYES sul MFMailComposeController).

Dovrei sprecare il mio tempo a creare un UIActivityItemProvider che restituisce contenuti personalizzati in base al "tipo di attività" o non c'è davvero alcun modo per ottenere il controller di posta presentato dal UIActivityViewController per interpretare il contenuto come HTML?

È stato utile?

Soluzione

Quali attività stai cercando di sostenere?I tipi di attività dipendono dal servizio, e sono carini chiaramente definito .Non c'è modo per i servizi per sapere che una stringa è un testo semplice o testo contrassegnato, ad esempio, potresti voler incollare il codice HTML di proposito.

Puoi sempre fare le cose del modo vecchio stile e copiare testo semplice e html al tabellone o chiamare direttamente il compositore di posta o qualunque cosa tu stia cercando di realizzare.

Altri suggerimenti

Nel mio test se la stringa inizia " " e termina " " è considerato come HTML.

Se si desidera un buon risultato con i servizi di condivisione aware non HTML che è necessario utilizzare invece un oggetto che implementa il UiactitiviTeMSource Protocol e restituisce la stringa HTML quando da -activityViewControllerPlaceholderItem: e da -activityViewController:itemForActivityType: se l'attività è UIActivityTypeMail e nil diversamente.

un secondo UiactivityTemsource che restituisce una stringa non html adatta da -activityViewControllerPlaceholderItem: e da -activityViewController:itemForActivityType: se l'attività non è UIActivityTypeMail (e nil se è) è il resto del puzzle.

Raccomandare di avere un oggetto eseguire entrambi i lavori, poiché il motore UIActivity ha il diritto di prendere decisioni diverse in base al fatto che l'elemento segnaposto sembra essere HTML o meno.

Non ho provato nessuno di questi, ma sembravano ragionevoli per il tuo obiettivo quando mi stavo familiarizzare con UiactivityViewController.

1) È possibile scrivere la sorgente HTML su un file locale, ad esempio my_mail_message.html, quindi creare un oggetto NSURL con quel file, ad esempio [NSURL URLWithString:@"file://my_mail_message.html"], quindi utilizzare quell'oggetto NSURL come elemento dell'array activityItems che si nutronoinitWithActivityItems:applicationActivities:.

2) Se si conosce il destinatario previsto, ad es. foo@example.com, è possibile creare un oggetto NSURL con lo schema mailto e l'origine HTML come body, come: mailto:foo@example.com?body={my HTML source goes here}. Dovresti omettere le bretelle ricci {}.Come prima, è necessario utilizzare l'oggetto NSURL come elemento dell'array activityItems.

Spero che questo ti dà qualche idea.

Hai solo bisogno di assicurarsi che la prima riga della stringa HTML sia un tag.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top