UITextView enveloppe le texte lorsqu'il est construit avec iOS 7 SDK
J'ai un UITextView
à l'intérieur d'un UIScrollView
qui fonctionnait parfaitement bien sur iOS 6
construit à partir de xcode 4.x
cependant en train de construire avec xcode 5
il ne fonctionne pas correctement, même sur iOS 6
.
Le problème est que le texte passe à la ligne avec la largeur de l'écran, même si le UITextView
et UIScrollView
ont de grandes largeurs. J'ai utiliser ce code pour travailler sur la nouvelle largeur et la hauteur de la UITextView
et même si le textview défile à gauche/à droite le texte est justifié que si la largeur n'est que la largeur de l'écran.
Grâce
self.responceTextView.text = [NSString stringWithFormat:@"%@%@",_responceTextView.text,responce];
[self textViewDidChange:self.responceTextView];
- (void)textViewDidChange:(UITextView *)textView
{
//Recalculate size of text field
CGSize maxSize = CGSizeMake(MAXFLOAT, MAXFLOAT);
CGSize reqSize = [textView.text sizeWithFont:[UIFont fontWithName:@"Courier" size:12] constrainedToSize:maxSize lineBreakMode:NSLineBreakByClipping];
self.responceTextView.frame = CGRectMake(0, 0, reqSize.width+16, reqSize.height+16);
//Resize scroll view if needs to be smaller so text stays at top of screen
CGFloat maxScrollHeight = maxScrollViewSize.size.height;
if (self.responceTextView.frame.size.height < maxScrollHeight) {
self.responceScrollView.frame = CGRectMake(self.responceScrollView.frame.origin.x, self.responceScrollView.frame.origin.y, self.responceScrollView.frame.size.width, self.responceTextView.frame.size.height);
} else {
self.responceScrollView.frame = maxScrollViewSize;
}
//Set content size
self.responceScrollView.contentSize = CGSizeMake(self.responceTextView.frame.size.width, self.responceTextView.frame.size.height);
[self scrollToCursor];
}
EDIT ----
Ok, donc il semble sizeWithFont
est obsolète dans iOS 7. Étrangement, je n'ai pas de message d'avertissement du compilateur.
Il n'est pas logique que cela ne fonctionne pas sur iOS 6 (ou est-ce complètement supprimé lors de la construction avec iOS 7 SDK?)
J'ai essayé ces 2 alternatives, mais d'obtenir exactement la même taille de tous.
NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:@"Courier" size:12], NSFontAttributeName,
nil];
CGRect rect = [textView.text boundingRectWithSize:maxSize options:NSLineBreakByClipping | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:attributes context:nil];
retourne: {{0, 0}, {439.27148, 168}}
CGSize rect2 = [textView.text sizeWithAttributes:attributes];
retourne: {439.27148, 168}
Et l'original ci-dessus renvoie {439.27148, 168}
Ils doivent tous revenir à une vue plus large.
MODIFIER 2 ----
Il semble, d'en haut, le retour de l'image est correcte (439 large) cependant, c'est le texte qui est toujours en cours de word enveloppé à l'intérieur de la textview.
source d'informationauteur Darren
Vous devez vous connecter pour publier un commentaire.
essayez d'utiliser:
La chaîne de mesure semble assez buggé. Cette option est la seule combinaison qui donne la bonne taille, pour le test je l'ai fait.
Je suis en utilisant le code suivant avec succès dans iOS7 (c'est un
UITextField
avec une hauteur minimale et maximale. Lorsque la hauteur du texte sont de plus en plus alorsMAX_HEIGHT_MESSAGE_TEXTBOX
les barres de défilement s'affiche dans laUITextField
).MODIFIER
Lorsque la chaîne de mesure est correct, vous devrez peut-être modifier le
lineBreakMode
sur leUITextView
's textContainer. (NSTextContainer
est une nouvelle classe dans iOS7, contenant des informations sur la façon dont le texte doit être aménagé):Bonne chance!
méthode
sizeWithFont:(UIFont *)font constrainedToSize ..."
a été dépréciée dans iOS 7.De fonctionner correctement.
Découvrez son suppléant dans iOS 7
Méthode d'Instance de
NSString
Vérifier cette réponse.
Remplacement déprécié sizeWithFont: dans iOS 7?
Je pense que vous voulez pour calculer la taille du contenu de sorte que vous pouvez augmenter la taille du contenu de défilement. si oui, Utilisez ce lien, https://stackoverflow.com/a/19152955/1023083
pour la réponse à "Merci, mais cela ne semble pas répondre à mes question. Je suis en utilisant à la fois flexible de la largeur et de la hauteur. Il me semble que je suis la bonne dimensions retourné comme le textview défile assez dans les deux directions, mais le texte lui-même est encore en cours de wordwrapped."
J'ai corrigé par cette [textView sizeToFit];