Pergunta

Eu tenho um problema. Precisa de um componente para misturar texto, links e texto clicável.

No aplicativo do Facebook pode ver um exemplo.http://img193.imageshack.us/img193/1355/example1t.jpg

Alguém sabe que pode fazer isso. Por exemplo, o UITextView pode detectar links no texto, mas não pode inserir texto clicável.

Obrigado pela ajuda.

Foi útil?

Solução

Eu usei o Coretext para esse fim.

O cálculo das compensações de toque foi um pouco complicado, já que eu continuava esquecendo de virar o sistema de coordenadas, mas acabei conseguindo, e aqui está uma breve visão geral de como você pode fazer isso:

  1. Crie seu texto como um NSMutableAttributedString (Como você terá que modificá -lo em algum momento).
  2. Digitalize -o para o texto ao qual deseja adicionar um link, insira dois atributos: 1) uma cor de texto que é, por exemplo, azul; e 2) um atributo de link personalizado (nomeie tudo o que você quiser, faça seu valor ser o link para o qual deseja ir)
  3. Renderizar o texto em seu drawRect:. Você precisará criar um CTFramesetterRef e a CTFrameRef (Este último você deseja ficar por perto. Observe também que a criação de um FrameSetter é um processo caro, faça -o apenas uma vez (ou seja, fora do drawrect :) se possível).
  4. No seu código de manuseio de toque, como mencionei anteriormente, você precisará compensar os diferentes sistemas de coordenadas. A partir daí, supondo que você saiba onde seu texto está usando seu sistema de coordenadas, você pode descobrir onde foi o texto que estava sendo renderizado, o Tap foi, o que pode ser interceptado em seu manipulador de toque, se o atributo em relação a um determinado CTRunRef Contém seu atributo de link personalizado. Se isso acontecer, basta obter o atributo e transmiti -lo para qualquer coisa - normalmente é aqui que você deseja usar um delegado.

Esse é o ponto crucial disso.

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