J'ai UITextView avec du texte. Tout allait bien avec iOS 6, mais maintenant avec iOS 7, il laisse un espace vide en haut, puis place le texte au-dessous du milieu de la visualisation.
Je n'ai défini aucun contentOffSet. S'il vous plaît aider!
Une vue de texte est une vue de défilement. Les contrôleurs de vue ajouteront automatiquement un décalage de contenu pour faire défiler les vues, car ils sont supposés vouloir défiler derrière la barre de navigation et la barre d'état.
Pour éviter cela, définissez la propriété suivante sur le contrôleur de vue contenant la vue texte:
self.automaticallyAdjustsScrollViewInsets = NO
La réponse actuelle donnée par IronManGill n’est pas une bonne solution, car elle ne repose pas sur une compréhension de la raison pour laquelle le problème se produit au départ.
la réponse de Jrturton n’est pas non plus la solution la plus propre. Vous n'avez pas besoin de passer outre. Rester simple!
Tout ce dont vous avez besoin est de définir les paramètres suivants:
self.automaticallyAdjustsScrollViewInsets = NO;
dans la méthode viewDidLoad.
Consultez la documentation: https://developer.Apple.com/documentation/uikit/uiviewcontroller/1621372-automaticallyadjustsscrollviewin
Dans le constructeur d'interface,
Cela a fonctionné pour moi
textView.textContainerInset = UIEdgeInsetsZero;
textView.textContainer.lineFragmentPadding = 0;
Je me demande vraiment s'il s'agit d'une fonctionnalité réelle… Cet encart automatique de 64 points n'est ajouté que lorsque UIScrollView
ou UITextView
est la profondeur plus grande de toutes les sous-vues de la vue du contrôleur de vue. Par exemple, si vous ajoutez une vue derrière la vue de défilement (ici, je parle de z-buffer, et non d’imbrication de vue), cet encart de 64 points n’est pas ajouté automatiquement.
Par exemple, celui-ci ajoute l'encadré:
Dans ce cas, l'encart n'est pas ajouté:
Cela me semble vraiment étrange… Pourquoi le système d'exploitation examine-t-il la profondeur de la vue pour décider s'il doit l'étendre?
Vous pouvez supprimer l'espace vide au-dessus de votre UITextView
en ajoutant:
yourTextView.textContainerInset = UIEdgeInsetsZero;
Sur Swift (Xcode 6)
self.automaticallyAdjustsScrollViewInsets = false
J'ai résolu ce problème en définissant le contenu du contenu sur une valeur négative. Voici le code Swift.
yourTextView.setContentOffset(CGPoint(x: 0, y: -150), animated: true)
J'ai essayé le truc suivant, ça a marché.
- (void)viewDidLoad{
self.textView.scrollEnabled = NO;
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
self.textView.scrollEnabled = YES;
}
Ce que vous devez comprendre, c'est que cela concerne la barre de navigation:
C'est une solution peu professionnelle, j'en suis sûr ... Mais le simple fait de mettre une étiquette vierge derrière la vue en mode texte résout le problème.
Solution pour Swift 4:
textView.textContainerInset = UIEdgeInsets.zero
Cela a juste fonctionné pour moi (disponible sur iOS 7)
[<#your UITextViewInstance#> setTextContainerInset:UIEdgeInsetsZero];