UITextView de détection de liaison dans iOS 7
J'ai un UITextView
qui est géré via une Interface Builder. Comme les données de détection, j'ai "Liens" est cochée. Dans iOS 6 tout fonctionne bien et les liens sont mis en évidence et sont cliquables. Dans iOS 7, tous les liens restent juste du texte brut. L'modifiable et sélectionnable cases sont décochées.
Ce qui peut être inquiétant est que la UITextView
est une sous-vue d'un conteneur de vue, qui est de nouveau à l'intérieur d'un UIScrollView
.
Vous devez vous connecter pour publier un commentaire.
Il semble que dans iOS 7 de détection de liaison ne fonctionne que si le
UITextView
est sélectionnable. Afin de faire de monUITextView
pas sélectionnable par l'arrêté de la le lien de détection de travail.J'ai également testé cette sous iOS 6, et je peux confirmer que dans iOS 6 le lien de détection fonctionne très bien, même avec la
UITextView
ne pas être sélectionnables.J'ai eu quelques problèmes avec le numéro de téléphone de détection d'aujourd'hui. Il semblait que la UITextView permettrait de conserver de vieux numéros de téléphone et de conserver le texte sélectionné après j'avais mis le texte à autre chose.
J'ai trouvé que si je setText:néant avant d'établir le texte de la nouvelle chaîne, il serait réinitialiser le textview, et les numéros de téléphone en surbrillance lorsque la normale. Je me demande si ce n'est une sorte de bug avec UITextView dans iOS 7.0
De toute façon, cela a fonctionné pour moi.
Quand iOS7 premier est sorti cette proie moi et j'ai trouvé une réponse dans ce fil (réglage de l'attribut de texte de la UITextView à zéro avant le réglage de la valeur réelle a fait le tour). Puis tout à coup, le problème (pour moi, c'était l'ensemble de la chaîne en surbrillance comme un lien) recadrée de revenir en arrière (en raison d'une mise à jour d'iOS).
Ce qui finalement fait le truc pour moi c'est de cesser d'utiliser l'attribut de texte et définissez la attributedText. Une fois que je l'ai fait, la nécessité d'établir des polices/défilement/sélectionnable/modifiable/etc. par programmation, a disparu. J'ai défini mon UITextView de l'IB, définissez les valeurs que je voulais (pas de défilement, non modifiable, le choix, la détection de liens et numéros de téléphone), puis construit une attribuée à cordes et ensemble:
Et soudain, tout a fonctionné comme prévu. Espérons que cela aide quelqu'un d'autre en bas de la route.
J'ai eu le même problème et la désactivation de défilement sur la UITextView active le lien de détection de la charge plutôt que de travailler uniquement une fois que l'utilisateur a interagi avec le textview. Le UITextView également être sélectionnable et non-modifiable.
Cours de les sélectionner ou de les avoir faites défiler permis n'est pas nécessaire sur iOS6.
Une autre chose à vérifier est que userinteraction est activé sur la cellule et l'affichage du contenu de la cellule, sinon le lien ne sera pas cliquable.
Vérifier Ces Lignes doivent être ajoutés à l'utilisation des données de détecteur de propriété de
textview
dansUItableView
cellule.Vous devriez vérifier
NSDataDetector
.Vous pouvez l'utiliser pour rechercher et traiter des données différentes (liens, numéros de téléphone et plus). Jetez un oeil sur ce site:
http://nshipster.com/nsdatadetector/
Vous pouvez également utiliser le
dataDetectorTypes
propriété deUITextView
pour définir ce que vous voulez détecter dans le code. Peut-être simplement d'un scénario de transition problème pour vous.Être conscient que votre textview ne reconnaît que les liens si pas modifiable!
Ici est un bon tutoriel sur la façon de faire un
editable UITextView
avec lien de détection`Modifiable UITextView avec lien detecion
Je n'ai pas eu de problème avec cette solution depuis maintenant.
Le truc, c'est un GestureRecognizer forwaring et touches d'activation/désactivation de l'édition.
On pourrait appliquer la même chose avec le
selectable /not selectable
question suriOS7
Après quelques tests, j'ai trouvé la solution.
Si vous voulez activer les liens et vous n'aurez pas activé la sélection, vous devez modifier gestureRecognizers.
Par exemple - il y a 3 LongPressGestureRecognizers. Un clic sur le lien (minimumPressDuration = 0.12), le second pour zoomer modifiable mode (minimumPressDuration = 0.5), la troisième pour la sélection (minimumPressDuration = 0.8). Cette solution supprime LongPressGestureRecognizer pour la sélection et la deuxième pour le zoom en mode d'édition.
Testé sur iOS 9, mais il devrait fonctionner sur toutes les versions (iOS 7, 8, 9).
J'espère que cela aide! 🙂
J'ai trouvé l'astuce, cela fonctionne sous iOS 7!
Vous devez définir le UITextView sélectionnable dans votre xib ou par programmation
et ensuite, vous devez désactiver les parchemins et de l'activer à nouveau, après l'ensemble de votre texte.
Donc à l'aide d'un UITextView de le garder activé, le choix, pas de défilement & liens détectable n'est pas aussi simple qu'il y paraît. J'ai rencontré ce dans iOS 8. Donc, ma solution a été de faire quelque chose comme ceci dans le viewDidLoad et puis définissez propriété modifiable à PAS lors de la zone de texte de l'édition qui est fait(l'habitude d'être une méthode comme doneIsTapped). L'astuce ici est de mettre en propriété modifiable ou PAS après la mise en texte de la valeur à textview est terminé. Cela permettra d'activer des liens dans le UITextview.
et
ce fait les liens activés dans textview. Aussi je vous recommande de ne pas utiliser de story-board en ce moment(ou jusqu'à ce qu'apple corrige ce problème) et il suffit d'utiliser le code pour éviter toute confusion inutile. Espérons que cette aide.
Désactivation UITextViews défilement capacité a fait le tour pour moi dans une configuration similaire.
La modification de la Teinte de la couleur à une autre couleur fonctionne réellement.
Toutefois, si sélectionnable permettre à la teinte sera également de la même couleur.
Faire de la propriété défilement de UITextView Pas. il va travailler...
Auto.textView.ScrollingEnable = NON;
Cette solution fonctionne pour moi:
Si vous ajoutez UITextview par programme juste ajouter ci-dessous les lignes:
Cela a fonctionné pour moi.
Aucun des ci-dessus a fonctionné pour moi, à la place j'ai fait ceci:
Je l'ai fait avec mon textview qui était censé détecter tous les types, et qui avait non détecté une qualité de couleur blanche. Vous pouvez modifier le code pour représenter votre couleur et types de lien à détecter.
Alors que ce fil est vieux, je n'ai pas de réponse qui a fonctionné pour moi avec Swift, donc, ici, va pour Swift 2.2