2017-10-10 4 views
0

J'ai créé un système de surbrillance pour ma vue de texte qui est assez grand pour activer le défilement, en bas j'ai ajouté un bouton utilisant une sous-vue qui agit comme une segue à la vue suivante.Le bouton de sous-vue de textview disparaît lors du changement de NSMutableAttributedString jusqu'à ce qu'il défile vers le haut

Lorsque je change le texte avec la fonction ci-dessous, le bouton disparaît (non cliquable ou visible). Lorsque je défile vers le haut de la vue de texte, puis redescend, le bouton réapparaît. Quelqu'un sait pourquoi? Est-il possible de rafraîchir l'affichage du bouton?

Modifier: Le compte de sous-vue ne change pas avant ou après l'événement.

func highlightText() { 

    guard let text = self.textView.attributedText else { 
     return 
    } 
    guard let range = self.textView.visibleBottomRange else { 
     return 
    } 
    let attributedString = NSMutableAttributedString(attributedString:text) 
    attributedString.addAttribute(NSBackgroundColorAttributeName, value: UIColor.yellow , range: range) 

    self.textView.attributedText = attributedString 
} 

Répondre

0

trouvé la réponse ici: Stackoverflow question

utilisant: self.textView.layoutManager.allowsNonContiguousLayout = false; permet la sous-vue de rester visible tout en changeant le texte attribué de vue texte