UITextView style est en cours de réinitialisation après la mise en texte de la propriété
J'ai UITextView *_masterText
et après l'appel de la méthode setText
propriété de police est en cours de réinitialisation.
Il se passe après que j'ai changer sdk 7.
_masterText est IBOutlet
, global et les propriétés sont définies dans la table de montage séquentiel. Il n'y a que moi ou c'est général SDK bug?
@interface myViewController : UIViewController
{
IBOutlet UITextView *_masterText;
}
@implementation myViewController
-(void)viewWillAppear:(BOOL)animated
{
[_masterText setText:@"New text"];
}
Vous devez vous connecter pour publier un commentaire.
Assis avec cela pendant des heures, j'ai trouvé le bug.
Si la propriété "Sélectionnable" = NON ça va réinitialiser la police et fontcolor quand setText est utilisé.
C'est donc au tour Sélectionnable SUR et le bug a disparu.
In iOS 6 and later, assigning a new value to this property also replaces the value of the attributedText property with the same text, albeit without any inherent style attributes. Instead the text view styles the new string using the font, textColor, and other style-related properties of the class.
je me demande si un dev a fait l'erreur que si selectable = oui, attaché xib propriétés comme la police et la couleur attribuée à la chaîne. Alors, quand setText est appelée, elle se remet à la classe de propriétés par défaut.Je suis tombé sur le même problème (sur Xcode 6.1) et tout Jean Cogan réponse a travaillé pour moi, j'ai trouvé que l'extension de la UITextView classe avec une catégorie a été une meilleure solution pour mon projet particulier.
interface
mise en œuvre
extension UITextView { func setSafeText(text: String){ let originalSelectable = selectable selectable = true self.text = text selectable = originalSelectable } }
Si vous voulez que votre texte en vue d'être en "lecture seule", vous pouvez vérifier Modifiable et Sélectionnable et décochez l'Interaction de l'Utilisateur est Activée, ce qui UITextView était de se comporter comme je le voulais
Eu ce problème moi-même, et la réponse ci-dessus aidé, mais j'ai ajouté un wrapper pour mon ViewController code comme suit et vient de passer le uiview instance et le texte à modifier et la fonction wrapper permet de basculer le choix de la valeur, les modifications de texte et puis l'éteint de nouveau. Utile lorsque vous avez besoin de la uitextview être désactivé à tout moment par défaut.
EDIT :
Réglage de la police pour UITextView dans iOS 7 pour moi, si tout d'abord, vous définissez le texte et après que vous avez défini le type de police :
Sur un fichier XIB, si vous ajoutez du texte à votre UITextView et de modifier la police ou la couleur qu'il fonctionne.
Voici un petit sous-classe de la solution que j'utilise pour ce problème.
Cette question refait surface dans Xcode 8. C'est la façon dont je l'ai corrigé:
Changé l'extension:
et coché l'option Sélectionnable dans Interface Builder.
Ce n'est pas très élégant d'avoir que " sélectionnable par paramètre, mais il va faire.
Dans iOS 8.3, la solution de contournement de réglage "sélectionnable" OUI avant la setText, et PAS après, n'est-ce pas le corriger pour moi.
J'ai trouvé j'avais besoin pour définir "sélectionnable" sur " OUI " dans la table de montage séquentiel, trop, avant que cela ne peut fonctionner.
Cela a fonctionné pour moi:
Pour moi avec attribuée texte, j'ai juste besoin de définir la police dans les attributs de la dictionnaire au lieu de le définir dans son propre champ.
Je vais avoir ce problème.
Un swifty-solution à l'amiable de @Ken Steele réponse de la réponse.
- Je prolonger la UITextView et ajouter une propriété calculée.
espère que cela aide.
Sa fait 3 ans et le bug existe toujours dans la dernière version stable de Xcode (7.3). Clairement apple a l'habitude de le réparer rapidement en laissant les développeurs avec deux options: départ sélectionnable et réglage UserInteractionEnabled de faux ou de la Méthode swizzling.
Si vous avez un bouton sur votre textView l'ancien ne suffira pas.
Sans code-changement-pris de la solution dans swift:
Objective-C:
À l'aide de travail a discuté de cette question, cette extension UITextView fournit un
setTextInCurrentStyle()
fonction. Basé sur la solution par Alessandro Ranaldi, mais ne nécessite pas l'actuel isSelectable de la valeur à être passés à la fonction.