Componente para texto de mixagem, links e texto clicável
-
26-09-2019 - |
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.
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:
- Crie seu texto como um
NSMutableAttributedString
(Como você terá que modificá -lo em algum momento). - 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)
- Renderizar o texto em seu
drawRect:
. Você precisará criar umCTFramesetterRef
e aCTFrameRef
(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). - 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