Le text volumineux étant coupé dans UITextView qui est à l'intérieur UIScrollView

J'ai un sérieux problème que je n'arrive pas à résoudre et qui me rend fou depuis deux jours. J'ai cherché loin et je ne trouve pas de solution, même si j'en ai essayé plusieurs.

J'ai un UITextView intérieur d'un UIScrollView . Je suis capable de resize dynamicment le UITextView dans le scrollview pour afficher le text. Mais quand l' UITextView contient un text très volumineux, il se coupe lorsque je défile presque jusqu'à la fin. Cependant, le cadre de UIScrollView est toujours correctement dimensionné.

J'ai lu ces messages: celui- ci et beaucoup d'autres similaires.

Les UIScrollview et UITextview sont tous deux créés dans le xib en utilisant AutoLayout.

Voici mon code actuel et une capture d'écran que vous pouvez voir l'location vide dans la capture d'écran devrait être rempli avec du text. aidez s'il vous plaît.

entrez la description de l'image ici

 - (void)viewDidAppear:(BOOL)animated { CGRect frame = self.longDescField.frame; frame.size.height = self.longDescField.contentSize.height; self.longDescField.frame = frame; self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width, self.longDescField.contentSize.height + 200); self.scrollView.scrollEnabled = YES; [self.scrollView flashScrollIndicators]; } 

Ce problème existe depuis iOS 7 et est toujours présent dans iOS 10.3.

Cependant, je n'ai pas pu conserver le comportement de défilement normal en définissant scrollEnabled = NO avant le redimensionnement, comme recommandé par @igz. Au lieu de cela, j'ai activé le défilement après le redimensionnement

 // Resize text view here textView.scrollEnabled = NO; textView.scrollEnabled = YES; 

Cela a forcé le text coupé à être rendu correctement.

Merci à tous pour votre aide. C'est finalement ce qui a fini par travailler pour moi dans iOS7.

J'ai dû désactiver la layout automatique pour ce xib particulier.

Puis a fait ce qui suit:

 [textView setScrollEnabled:YES]; [textView setText:text]; [textView sizeToFit]; [textView setScrollEnabled:NO]; 

Pour moi, la solution était de mettre sizeToFit après la personnalisation du text

 [self.yourTextView sizeToFit]; 

Cela devrait être la dernière chose que vous faites lorsque vous manipulez le textview, ne devrait pas être avant de remplir le text du contenu.

Définitivement iOS7. J'ai eu ce même problème s'appliquant à tous UITextViews qui ont été redimensionnés, à la fois xib et le code généré. J'ai trouvé le textContainer.size nécessaire d'ajuster après que l'UITextView cadre a été changé.

J'ai créé ce code de catégorie pour ajuster le textContainer.size mais il semble aussi avoir besoin d'ajuster après avoir défini la valeur du text, donc je dois appeler adjustAfterFrameChange après tout changement de text s'ils ne sont pas suivis en définissant la taille du cadre. Ce code fait l'hypothèse que UITextView ne fait rien avec setFrame: lui-même sortez setFrame: et appelez adjustAfterFrameChange manuellement si vous voulez éviter ce risque

Modifier: modifié

 self.textContainer.size = self.frame.size; // fix for cut off text 

à

 self.textContainer.size = self.contentSize; // fix for cut off text 

 @interface UITextView(Extras) - (void)adjustAfterFrameChange; @end @implementation UITextView(Extras) - (void)adjustAfterFrameChange { #if defined(__IPHONE_7_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_7_0 if ([self respondsToSelector:@selector(textContainer)]) self.textContainer.size = self.contentSize; // fix for cut off text #endif } - (void)setFrame:(CGRect)frame { [super setFrame:frame]; [self adjustAfterFrameChange]; } @end 

Essaye ça

 [self.textView setContentInset:UIEdgeInsetsMake(-8.0, 0, -8.0, 0)]; 

Cela fonctionne pour l'affichage de text coupé dans UITextView.

J'ai eu un problème similaire, dans lequel le text long était coupé après un redimensionnement de la vue du text. Désactiver scrollingEnabled avant le redimensionnement semblait le réparer. Sûr semble être un bug IOS 7.

Nous avons eu un problème comme celui-ci avec le deployment d'iOS7. Lorsque nous avons appelé setText qui a ajouté une nouvelle ligne (ou lignes) à notre UITextView, le textview n'utilisait pas la nouvelle hauteur correcte pour son redessin. Le setNeedsDisplay, setNeedsLayout, redessiner les calques, redessiner l'set de la vue, etc, tout n'a pas fonctionné. Finalement, nous avons forcé une perte et un gain de concentration:

 [textView resignFirstResponder]; [textView becomeFirstResponder]; 

Cela a forcé le recalcul de la hauteur et le redessiner correctement. Heureusement, cela ne fait pas apparaître le keyboard, mais il vaut la peine de tester la régression sur toutes les versions iOS sockets en charge par votre application.

Cela arrive tout le long, depuis Interface Builder aussi.

Lorsque l'affichage de text est sélectionné, dans Inspecteur des utilitaires, décochez l'option Indique l'indicateur vertical. Le text recadré apparaît maintenant.

Nous avons eu le même problème, sauf que la moitié gauche ou la moitié droite de UITextView était coupée. Arrivé à la fois sur iOS 7 et iOS 6, sur une variété de téléphones. Appel:

 myTextView.scrollEnabled = NO; 

dans viewWillAppear a travaillé autour du problème.

J'ai le même problème pour un textview (sans scrollview). Résolu ceci (Xcode 7.3.1, iOS 9.3) juste en décochant "Scrolling Enabled" dans l'inspecteur d'attributes.

Essayez juste ceci.

Dans IOS 8 et Xcode 6.3,

 textview.scrollEnabled=YES; [self.textview setContentInset:UIEdgeInsetsMake(-10.0, 0, -5.0, 0)]; 

Je peux me tromper mais je ne comprends pas votre problème à fond mais à quoi sert d'utiliser un UIScrollView puisque la class UITextView implémente le comportement pour une région de text multiligne défilante?

Vous devriez rejeter le UIScrollView.

Aucune de ces réponses n'a fonctionné pour moi.

Je plaisantais avec le storyboard et de toute façon ça fonctionne maintenant. Il semble toujours mal dans le storyboard mais sur l'appareil il affiche maintenant bien.

J'ai fait diverses choses , y compris basculer plusieurs des options pour le champ de text.

Je pense que ce qui me convenait était de rendre la vue plus grande, de la build et de la rendre de nouveau à la bonne taille .

Mes excuses pour une vague réponse incertaine, mais peut-être que ça aide. Ce projet a été écrit à l'origine pour iOS 5, et la vue du text n'a peut-être pas été beaucoup chamboulée depuis.

Je suis confronté à la même situation. Je dois désactiver le défilement de UITextView et faire que la dernière ligne est coupée. Voici ma solution:

 //In the UITextView subClass, override "gestureRecognizerShouldBegin" and let the scrolling of UITextView remain on. -(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { if ([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] && gestureRecognizer.view == self){ return NO; } return [super gestureRecognizerShouldBegin:gestureRecognizer]; } 

Dans Swift, j'ai résolu ce problème en définissant simplement UITextView de mon UITextView :

 textView.textContainerInset = UIEdgeInsets(top: 0.0, left: 0.0, bottom: 50.0, right: 0.0)