UITextView-la police de paramétrage ne fonctionne pas avec iOS 6 sur XCode 5

j'utilise des storyboards pour mon interface. J'utilisais auparavant XCode 4.6 et je suis sorti sur iOS 6. J'ai depuis mis à jour vers iOS 7 en utilisant XCode 5 et mis à jour le Storyboard pour fonctionner correctement avec XCode 5. J'ai un problème cependant:

UITextView ne veut pas afficher les changements de police dans le code. Les changements de couleur du texte fonctionnent bien. Tout autre changement de propriété est acceptable. La police, pas du tout. J'utilisais une police personnalisée, donc j'ai vérifié différentes polices avec différentes tailles (i.e. systemFontOfSize: ) mais ça n'a pas marché. La vue texte seulement montre la police qui est définie dans le Storyboard. Que pourrais-je manquer ici? Y a-t-il des contraintes de mise en page automatique qui nuisent à ce genre de chose? J'ai eu quelques problèmes avec les contraintes pendant la migration, mais comme je l'ai dit, les polices fonctionnent bien dans iOS 7.

je suppose que c'est quelque chose dans le Storyboard que je manque, comme si je créais un UIViewController et ajoutais une vue texte en code, ça marche très bien.

j'aurais mis un peu de code, mais je ne suis pas sûr que ça aiderait du tout dans ce cas.

65
demandé sur Harry 2013-10-01 14:19:04

11 réponses

encore plus étrange, cela ne se produit que sur iPhone, pas iPad.

si vous définissez la police en code et que vous ne voulez pas d'une vue texte modifiable, faites ceci:

textView.editable = YES;
textView.font = newFont;
textView.editable = NO;
114
répondu jab 2013-10-03 20:27:01

dans mon cas, il s'agit de la propriété "sélectionnable" D'UITextView.

donc j'ai vérifié la propriété 'selectable' D'UITextView dans L'éditeur Storyboard pour la définir Oui To set selectable

et plus tard dans viewWillAppear définir cette propriété.

textview.text = @"some text";
textview.selectable = NO;
74
répondu Satachito 2013-12-17 06:38:19

le problème a été causé par le fait que la propriété editable était fausse dans le scénario-Maquette. Je n'ai absolument aucune idée pourquoi cela a fait que la police est restée inchangée - et seulement sur iOS 6.

55
répondu Harry 2013-10-01 11:04:57

pour moi c'est le travail si vous définissez le texte de votre UITextView et après avoir défini la police (même pour la couleur):

_myTextView.text = @"text";
[_myTextView setFont:[UIFont fontWithName:@"Helvetica Neue" size:18.0f]];
_myTextView.textColor = [UIColor whiteColor];
20
répondu Jordan Montel 2013-10-03 20:35:18

Merci pour toutes les réponses. Le problème est toujours présent sur iOS9. Ce que j'ai découvert, c'est que lorsque vous mettez " Interaction de L'utilisateur activé = false " dans le constructeur de L'Interface, vous pouvez laisser modifiable et sélectionnable = vrai et l'utilisateur ne sera pas en mesure d'éditer une vue de texte.

donc, ma solution est:

  1. Ensemble Utilisateur Interaction activée = faux in IB
  2. Set Modifiable = True IB
  3. Set Selectable = True in IB
  4. configurez votre vue texte de la manière que vous voulez.
14
répondu Flar 2016-03-10 14:53:01

Code pour swift:

textOutlet.editable = true
textOutlet.textColor = UIColor.whiteColor()
textOutlet.font = UIFont(name: "ArialMT", size: 20)
textOutlet.editable = false

ou si vous changez le texte en premier il est résolu par magie

textOutlet.text = "omg lol wtf"
textOutlet.textColor = UIColor.whiteColor()
textOutlet.font = UIFont(name: "ArialMT", size: 20)
10
répondu Esqarrouth 2014-12-07 21:05:20

j'ai trouvé que la taille de la police était ignorée. Cela a été résolu en cochant la case intitulée: Selectable (après avoir sélectionné L'UITextView dans le storyboard)

6
répondu Charlie Seligman 2015-09-23 19:37:28

ce problème ne se produit que lors de la définition de propriété Sélectionnable à FALSE dans le constructeur D'Interface.

dans le cas où vous êtes tenu d'avoir les propriétés modifiables et sélectionnables réglé à FALSE le faire à partir du CODE et non dans le constructeur D'Interface.

en résumé, rendre Modifiable et Sélectionnable properties = OUI dans le Interface Builder et puis ajoutez le code suivant dans si vous avez besoin que les propriétés soient FALSE:

_textView.editable   = NO;
_textView.selectable = NO;

Espère que cette aide,

6
répondu Daniel Belém Duarte 2016-01-01 19:08:41

Swift 3 catégorie qui a fonctionné pour moi:

extension UITextView {
    func setFontAndUpdate(_ font: UIFont?) {
        self.font = font

        // Font doesn't update without text change
        let text = self.text
        self.text = nil
        self.text = text
    }
}
1
répondu Anton Plebanovich 2017-05-03 11:39:22

dans mon cas (développement sur Xcode 7.3, iOS 9),

la cause était l'ordre de mise texte et font-famille/taille, pas les options de modifiable ou sélectionnable beaucoup de réponses disent là.(et je ne suis pas tout storyboard, xib sur que Textview.)

si j'entre comme

[myTextView setFont:[UIFont fontWithName:@"HelveticaNeue-Italic" size:20]];
myTextView.attributedText = mAttStr;

alors la famille et la taille de la police ne sont pas changées, mais autrement quand j'inverse ces deux étapes, ça marche. Le texte de réglage doit être en avance sur le réglage police de caractères de la famille du/de la taille.

0
répondu Maggie Phillips 2016-04-09 07:51:04

comme mentionné par d'autres:

textView.font = UIFont.systemFont(ofSize: 16)
textView.isEditable = false

p.s. pas besoin à la première série isEditable comme true puisque c'est true par défaut: un peu plus court, un peu plus agréable

0
répondu Can 2017-03-22 17:25:28