J'ai utilisé CoreText à cette fin.
Calcul des décalages de prises était un peu difficile, car je continuais oublier de retourner le système de coordonnées, mais j'ai finalement eu, et voici un bref aperçu de la façon dont vous pouvez le faire:
- Créer votre texte comme
NSMutableAttributedString
(puisque vous devrez le modifier à un moment donné).
- Recherchez le texte auquel vous souhaitez ajouter un lien, insérez deux attributs: 1) Une couleur de texte, par exemple, bleue; et 2) un attribut de lien personnalisé (nommez-le comme bon vous semble, donnez sa valeur au lien que vous voulez atteindre)
- Rendu le texte dans votre
drawRect:
. Vous aurez besoin de créer un CTFramesetterRef
et un CTFrameRef
(le dernier que vous voudrez garder autour.) Notez également que la création d'un framesetter est un processus coûteux, faites-le une seule fois (c'est-à-dire en dehors de drawRect :) si possible).
- Dans votre code de manipulation tactile, comme je l'ai mentionné précédemment, vous devrez compenser les différents systèmes de coordonnées. À partir de là, en supposant que vous savez où votre texte utilise son système de coordonnées, vous pouvez déterminer où le texte a été tapé, lequel peut ensuite être intercepté dans votre gestionnaire tactile, si l'attribut sur un
CTRunRef
contient votre lien personnalisé attribut. Si c'est le cas, il suffit d'obtenir l'attribut, et de le passer à tout - en général, c'est là que vous voulez utiliser un délégué.
C'est le point crucial.
un exemple s'il vous plaît? – stefanosn