Pergunta

Quando eu passar uma seqüência de caracteres que contém o conteúdo HTML como um elemento de matriz para o UIActivityViewController initWithActivityItems o método não apresenta-lo como HTML em 'compartilhar' controlador, mas, em vez disso apresenta o código HTML (i.e.a marcação em vez de interpretá-lo).

E enquanto eu posso entender por que ele faria isso para compartilhar metas que não oferecem suporte a conteúdo em html, não interpretá-lo para coisas como e-mail, o que fazer (anteriormente, isso deve ser feito definindo o isHTML propriedade YES no MFMailComposeController).

Eu deveria perder o meu tempo a criar um UIActivityItemProvider que retorna de conteúdo personalizado com base no "tipo de atividade", ou seja, não há realmente nenhuma maneira de obter o email do controlador apresentado pelo UIActivityViewController para interpretar o conteúdo como HTML?

Foi útil?

Solução

Quais as atividades que você está olhando para o suporte?Tipos de atividade dependem do serviço, e eles são muito claramente definidos.Não há nenhuma maneira de serviços de saber que uma string é um texto simples ou marcado de texto, por exemplo, você pode querer colar o código HTML de propósito.

Você pode sempre fazer as coisas da maneira antiga e cópia de texto sem formatação e HTML para o quadro de colagem, ou ligue para o compositor de e-mail diretamente, ou o que quer que você está tentando realizar.

Outras dicas

No meu teste, se a cadeia começa "<html><body>"e termina "</body></html>"então ele é tratado como HTML.

Se você quer um bom resultado com o não-HTML-ciente de partilha de serviços que você precisa para usar em vez disso, um objeto que implementa a UIActivityItemSource protocolo e retorna a seqüência de caracteres HTML quando, a partir -activityViewControllerPlaceholderItem: e a partir de -activityViewController:itemForActivityType: se a atividade é UIActivityTypeMail e nil caso contrário.

Um segundo UIActivityItemSource que retorna um adequado não-HTML cadeia de -activityViewControllerPlaceholderItem: e a partir de -activityViewController:itemForActivityType: se a atividade não é UIActivityTypeMail (e nil se é) é o resto do quebra-cabeça.

Eu recomendo contra a existência de um objeto em ambos os trabalhos, como o UIActivity o motor é o direito de tomar decisões diferentes, dependendo de se o espaço reservado item parece ser HTML ou não.

Eu não tentei qualquer um desses, mas parecia razoável para o seu objetivo, quando eu estava ficando-me familiarizado com UIActivityViewController.

1) Você poderia escrever o código fonte HTML para um ficheiro local, por exemplo, my_mail_message.html, e , em seguida, construir uma NSURL objeto com que o arquivo, por exemplo, [NSURL URLWithString:@"file://my_mail_message.html"], e , em seguida, usar o que NSURL objeto como um elemento de a activityItems matriz que você feed initWithActivityItems:applicationActivities:.

2) Se você souber o destinatário pretendido, ou seja, foo@example.com, você poderia construir um NSURL objeto com o mailto o esquema e o código-fonte HTML como o body, assim: mailto:foo@example.com?body={my HTML source goes here}.Você deve omitir as chaves {}.Como antes, você deverá então utilizar o que NSURL objeto como um elemento de a activityItems matriz.

Espero que este dá-lhe algumas ideias.

Você só precisa ter certeza que a primeira linha da seqüência de caracteres HTML é uma tag.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top