Puis-je changer la couleur de détecté automatiquement des liens sur UITextView?
J'ai eu un UITextView
qui détecte les numéros de téléphone et liens, mais il remplace mon fontColor
et de le modifier pour blueColor
. Est-il un moyen de formater la couleur de l'auto détecté des liens, ou devrais-je essayer une version manuelle de cette fonction?
Aimerais aussi savoir si ou comment cela est possible.
Cochez cette réponse en utilisant une api sous-vue UIWebDocumentView: stackoverflow.com/a/11745983/111277
Cochez cette réponse en utilisant une api sous-vue UIWebDocumentView: stackoverflow.com/a/11745983/111277
OriginalL'auteur Leandro Alves | 2009-08-29
Vous devez vous connecter pour publier un commentaire.
Sur iOS 7, vous pouvez définir la
tintColor
de laUITextView
. Il affecte la couleur du lien ainsi que le curseur de la ligne et de la couleur du texte.iOS 7 a également ajouté une nouvelle propriété à
UITextView
appelélinkTextAttributes
, qui apparaît pour vous permettre de contrôler pleinement le style de lien.J'ai donné de plus amples explications dans cette réponse: stackoverflow.com/a/21027340/1202222
Sur iOS 10.3, je n'étais pas en mesure de remplacer la
NSFontAttributeName
aveclinkTextAttributes
. J'ai eu de spécifier manuellement la police dans la même gamme que monNSLinkAttributeName
OriginalL'auteur stonemonk
Au lieu d'utiliser un UITextView, j'ai utilisé une UIWebView et activé l'option "détecter automatiquement les liens". Pour changer la couleur du lien, vous venez de créer régulièrement un CSS pour la balise.
J'ai utilisé quelque chose comme ceci:
Je sais... mais je ne connais pas de solution de contournement moins hackish. Apple devrait vraiment penser à ces petits détails.
eh bien, je pense que c'est moins hackish que Alexanders réponse. Toujours fou qu'il n'y a pas de propriété simple pour fondamentale de la fonctionnalité.
la question est sur le textview pas webview!
c'est un travail pour moi...Merci @LeandroAlves.
OriginalL'auteur Leandro Alves
Vous pouvez utiliser
UIAppearance
protocole pour appliquer les modifications pour tous les textes vues:Swift 4.x:
Swift 3.x:
Swift 2.x:
Objective-C:
Apparence pour
UITextView
n'est pas documentée, mais fonctionne bien.Garder à l'esprit
UIAppearance
notes:En d'autres termes:
L'appel de ce code dans
init()
, ouinit(coder:)
méthodes sera changement de l'INTERFACE utilisateur apparence de l'Objet, mais en l'appelant dansloadView()
, ouviewDidLoad()
de viewController ne.Si vous souhaitez définir l'apparence pour l'ensemble de l'application,
application(_:didFinishLaunchingWithOptions:)
est le bon endroit pour appeler un tel code.C'est le meilleur et up-to-date de la réponse.
J'ai utiliser un UITextView et écrire le code ci-dessus dans le viewdidload. mais quand j'écris un e-mail dans le champ de texte et entrez dans l'espace de couleur n'est pas en train de changer.
OriginalL'auteur Grubas
Vous pouvez Changer la Couleur lien Hypertexte dans un TextView par ce qui suit:
Dans la Plume de fichier, vous pouvez aller à la Fenêtre des Propriétés et modifiez la Teinte à laquelle jamais la couleur que vous souhaitez.
ou vous pouvez aussi le faire par programmation à l'aide du code ci-dessous
OriginalL'auteur Manju
Le problème avec UITextView
linkTextAttributes
est qu'il s'applique à tous les détectée automatiquement des liens. Que faire si vous souhaitez que les différents liens pour avoir des caractéristiques différentes?Il s'avère qu'il y est un truc: configurer les liens dans le cadre de l'affichage de texte attribué texte, et définir la
linkTextAttributes
à un dictionnaire vide.Voici un exemple dans iOS 11 /Swift 4:
Ma Chaîne est "Voulez apprendre iOS?" Vous devriez visiter la meilleure source d'iOS gratuite tutoriels! Swift vérification bonjour google.com Attribués 9826012345 Chaîne de test dans un..." et le lien par Défaut de l'attribut est requis pour le lien web et le numéro de téléphone mobile. Mais je veux faire un lien pour la partie de chaîne "Voulez apprendre iOS?" dans une couleur différente avec lien..Donc de soi.tv.linkTextAttributes = [:] est uniquement pour lien personnalisé.
Vote pour
the important thing
!!N'aurait jamais pensé à ce +1 +1 +1
OriginalL'auteur matt
La teinte de la couleur peut être fait dans le storyboard aussi
OriginalL'auteur Ryan Heitner
J'ai trouvé en effet une autre façon sans l'aide d'une webview mais gardez à l'esprit que ce n'utilise API privée et peut être rejeté dans l'appstore:
EDIT: Mon application a été approuvé par apple, bien que privés d'utilisation de l'api!
D'abord déclarer une catégorie sur UITextView avec les méthodes
Ils sont juste de faire ce qui suit:
Maintenant écrire une méthode pour coloré liens:
Il ne définissez l'attribut de style avec une couleur spécifique sur tous les types de liens.
UITextViews sont rendus Webiview comme via les divs de sorte que vous pourrait même aller plus loin et de couleur à chaque type de lien séparément:
La
x-apple-data-detectors-type="link"
est l'indicateur le type exact du lienMODIFIER
Sur
iOS7
ce n'est plus de travail. Dans iOS7, vous pouvez facilement changer la couleur du lien de UITextViews par le réglage de la teinte de la couleur. Vous ne devez pas appelerplus, vous obtiendrez une exception. Au lieu de faire ce qui suit si vous voulez supporter iOS 7 et ci-dessous:
Vous ne devez déclarer une Catégorie sur UITextView avec les méthodes - voir mon edit
OriginalL'auteur Alexander
EDIT:
Ne pas le faire avec des
UITextView
, utilisezUIWebView
à la place.Vous avez besoin de faire une feuille de style pour que. Définir une classe, avec la combinaison de couleur que vous avez besoin-
maintenant utiliser la classe 'headercopy' dans votre page html comme ceci-
cela permet d'afficher le numéro de téléphone de la couleur dont vous avez besoin avec la fonctionnalité de clic.
UIWebView
.web à l'aide de points de vue est un mauvais style de programmation pour les applications natives.
OriginalL'auteur Vaibhav Saran
Ce code permet de définir la couleur d'un numéro de téléphone sur un I-Phone mais annule l'appel automatique de lien.
OriginalL'auteur Mark Overton