UITextView dans iOS7 clips la dernière ligne de la chaîne de texte
UITextView dans iOS7 a été vraiment bizarre. À mesure que vous tapez et entrent dans la dernière ligne de votre UITextView, le défilement de la vue n'est pas faites défiler vers le bas comme il se doit et il provoque le texte à être "coupées". J'ai essayé de réglage c'est clipsToBound propriété, mais il reste des clips le texte.
Je ne veux pas l'appeler sur "setContentOffset:animation" parce que de un: c'est très hacky solution.. deuxièmement: si le curseur est au milieu (à la verticale) de notre textview, il va entrainer de défilement.
Voici une capture d'écran.
Toute aide serait grandement appréciée!
Merci!
- Je rencontre le même problème sur l'appareil. Avez-vous trouvé un correctif pour ce problème? Merci!
- Doublon potentiel. Ma réponse est ici: stackoverflow.com/a/19200023/4397
- double possible de UITextView curseur en dessous de l'image lors de la modification d'image
- Désolé pour la réponse tardive -- j'ai renoncé à trouver une solution et a fini la construction de mon "texte à afficher" avec une web intégré de vue à l'aide de l'élément textarea. Pas ma solution idéale, mais il fonctionne :T.
- Pour moi, le problème persiste encore sous iOS 7.0.3 sur le simulateur et un périphérique.
- Il n'y a pas de problème sur 7.1 sauf la dernière ligne est vide. Et toutes les solutions ne fonctionnent pas lorsque la dernière ligne est vide. Donc, il n'y a pas de solution sur iOS 7.1.
- Quelqu'un a un correctif pour iOS 7.1?
- Le problème est résolu sur iOS 8.
Vous devez vous connecter pour publier un commentaire.
Le problème est dû à iOS 7. Dans l'affichage de texte délégué, ajoutez ce code:
La solution que j'ai trouvé ici a été d'ajouter une ligne de correction après vous créez un UITextView:
Une ligne fixe trois questions j'ai eu la création d'un UITextView base de l'éditeur de code avec la coloration syntaxique sur iOS7:
Remarque, je n'ai redimensionner la UITextView lorsque le clavier est affiché/caché.
Essayer de la mise en œuvre de la
-textViewDidChangeSelection:
méthode du délégué de la UITextViewDelegate comme ceci:Heres une version modifiée de la réponse sélectionnée par davidisdk.
J'ai été faire un bug que lorsque le textView de la taille du contenu est plus grand, alors les limites et le curseur est à l'écran (comme l'utilisation d'un clavier et en appuyant sur la touche de la flèche) le textView ne pas animer le texte à insérer.
À mon humble avis c'est le réponse définitive pour l'ensemble de la typique UITextView défilement /clavier des questions liées à l'iOS 7. Son propre, il est facile à lire, facile à utiliser, facile à entretenir et peuvent être facilement réutilisées.
L'astuce de base:
Simplement changer la taille de la UITextView, pas le contenu de l'encart de!
Voici un exemple pratique. Il prend pour acquis que vous avez une PLUME/Storyboard à base de UIViewController à l'aide de mise en page automatique et le UITextView remplit l'ensemble de la vue racine dans la UIViewController. Si non, vous devrez adapter la façon dont vous modifiez le textViewBottomSpaceConstraint à vos besoins.
Comment:
Ajouter ces propriétés:
Connecter le textViewBottomSpaceConstraint dans Interface Builder (n'oubliez pas!)
Puis dans le viewDidLoad:
Ajouter ces méthodes pour gérer le Clavier de redimensionnement (grâce à https://github.com/brennanMKE/Interfaces/tree/master/Keyboarding - ces méthodes sont par brennan!):
Enfin, ajoutez ces méthodes pour faire réagir le clavier de notifications et de redimensionner la UITextView
Également ajouter ces méthodes pour faire défiler automatiquement à l'endroit où l'utilisateur a cliqué
Cela permettra également de répondre à votre question
Si vous utilisez la table de montage puis ce comportement peut également se produire si vous avez quitté la mise en page automatique (comme c'est le cas par défaut) et n'a pas défini d'en haut/en bas des contraintes UITextView. Vérifiez le Fichier Inspecteur pour voir ce que votre mise en page automatique de statut est...
Ici est la MonoTouch version de davididsk la plus excellente solution (à partir de ci-dessus).
Cette ligne provoque la dernière ligne de texte à ne pas se présenter pour moi:
Essayez d'enlever pour voir ce qui se passe...
Cette résolu le problème pour moi
Ensemble theViewDelegate à "l'auto" dans votre .m et à utiliser dans votre .h puis ajoutez ce code à votre .m
Permettra de gérer à la FOIS les versions de ce pépin qui se produisent pour aller à la prochaine ligne de texte (emballage ou retour chariot) et de taper... ET passe à la ligne suivante avec seulement un retour chariot et un pas de frappe (ce code, contrairement à d'autres du code de défilement pour afficher le curseur clignotant ne pas être coupés dans cette deuxième glitch scénario)
CGRectMake(5,5,5,999999999999999999)
.scrollToBottom
. J'aurais pu lui dire pour importer <float.h> et au lieu utiliséDBL_MAX
, mais j'ai pensé que ce serait trop de tracas, alors j'ai juste des envois en nombre de 9, il a le même effet.