Composant pour le texte du mix, des liens et du texte cliquable
-
26-09-2019 - |
Question
J'ai un problème. Besoin d'un composant pour le texte de mélange, des liens et du texte cliquable.
Facebook App peut voir un exemple. http://img193.imageshack.us/img193/1355/example1t.jpg
Quelqu'un sait un que peut le faire. Par exemple, UITextView peut détecter des liens dans le texte, mais ne peut pas insérer du texte cliquable.
Merci pour votre aide.
La solution
Je l'ai utilisé CoreText à cet effet.
Calcul des décalages de prises était un peu difficile, car je continuais oublier de retourner le système que je finalement obtenu, mais la coordination, et voici un bref aperçu de la façon dont vous pouvez le faire:
- Créez votre texte comme un
NSMutableAttributedString
(puisque vous devrez le modifier à un moment donné). - scannons pour le texte que vous souhaitez ajouter un lien vers, insérer deux attributs: 1) Une couleur de texte qui est, par exemple, le bleu; et 2) un attribut de lien personnalisé (nommez-ce que vous voulez, faire sa valeur être le lien que vous voulez aller)
- Rendre le texte dans votre
drawRect:
. Vous devrez créer unCTFramesetterRef
et unCTFrameRef
(ce dernier vous voulez garder autour. A noter également que la création d'un framesetter est un processus coûteux, le faire qu'une seule fois (c.-à-dehors de drawRect :) si possible). - Dans votre contact code de gestion, comme je l'ai mentionné plus tôt, vous aurez besoin de compenser les différents systèmes de coordonnées. A partir de là, en supposant que vous savez où votre texte utilise son système de coordonnées, vous pouvez savoir où le texte étant rendu le robinet était, qui peut alors être intercepté dans votre gestionnaire de contact, si l'attribut sur un
CTRunRef
particulier contient votre lien personnalisé attribut. Le cas échéant, obtenir simplement l'attribut, et le transmettre à tout -. En général, c'est là que vous aurez envie d'utiliser un délégué
C'est le point crucial de celui-ci.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow