2015-04-17 4 views
6

J'ai un UITableViewCell sous-classé qui contient un UITextView. J'ai ajouté NSParagraphStyle en tant qu'attribut à la chaîne dans un NSTextStorage sous-classé. Dans le code suivant, j'ai augmenté l'espace entre chaque ligne dans UITextView.La modification de la propriété d'interligne dans NSParagraphStyle provoque l'allongement du curseur

rapide

let paragraphStyle = NSMutableParagraphStyle() 
paragraphStyle.lineSpacing = 11 
myCustomTextStorage.appendAttributedString(NSAttributedString(string: someText, attributes: [NSParagraphStyleAttributeName: paragraphStyle])) 

La hauteur du curseur jusqu'à la hauteur allonge de la ligne suivante comme indiqué ci-dessous. Cela n'arrive que sur les lignes avant la dernière rangée.

enter image description here

J'ai regardé plusieurs messages sur SO au sujet de cette question, y compris this post; Cependant, aucune des solutions proposées ne semble fonctionner pour moi.

J'ai lu la documentation TextKit mais je n'ai trouvé aucune solution à ce problème.

Y a-t-il un moyen de réduire la hauteur du curseur?

Répondre

0

Cela fonctionne comme prévu et c'est la même chose sur Mac. Il est destiné à fournir à l'utilisateur une rétroaction visuelle de la ligne sur laquelle il se trouve et de la hauteur de cette ligne. Vous devriez réfléchir avant de changer cela simplement parce que vous n'aimez pas l'apparence. Cela dit, la méthode dans le post SO que vous avez lié ci-dessus est l'approche générale pour ajuster le curseur (bien que l'origine du rect ajusté puisse aussi être ajustée). Et ça n'a pas marché pour vous? Ce serait mieux de partir de là.

0

une réponse à ce problème est donnée sur ce sujet. juste coller ici pour référence future. iOS - UITextView lineSpacing make cursor height not same

« vous pouvez changer la hauteur du curseur en dérivant UITextView, puis remplacer le caretRectForPosition:. Fonction de position Exemple:

  • (CGRect) caretRectForPosition: Position (UITextPosition *) { CGRect originalRect = [ super caretRectForPosition: Position]; originalRect.size.height = 18,0; retour originalRect;} "