2013-11-26 8 views
17

ich NSMutableParagraphStyle in meinem UITextview für das Hinzufügen von linespace zwischen jeder Zeile Text bin mit.iOS - UITextView LineSpacing machen Cursor Höhe derselben nicht

Wenn ich etwas in Textview geben, ist die Cursor-Höhe normal. Wenn ich aber die Cursorposition in den Text der zweiten Zeile (nicht der letzten Zeile) verschiebe, wird die Cursorhöhe größer.

enter image description here

Was soll ich tun Cursor Höhe normal in jeder Zeile der Texte zu machen? Dies ist Code, den ich zur Zeit bin mit:

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; 
paragraphStyle.lineSpacing = 30.; 
textView.font = [UIFont fontWithName:@"Helvetica" size:16]; 
textView.attributedText = [[NSAttributedString alloc] initWithString:@"My Text" attributes:@{NSParagraphStyleAttributeName : paragraphStyle}]; 

Antwort

23

Schließlich erhalte ich die Lösung, die mein Problem lösen.

Wir können die Cursorhöhe ändern, indem wir UITextView ableiten und dann die caretRectForPosition:position-Funktion überschreiben. Zum Beispiel:

- (CGRect)caretRectForPosition:(UITextPosition *)position { 
    CGRect originalRect = [super caretRectForPosition:position]; 
    originalRect.size.height = 18.0; 
    return originalRect; 
} 

Dokumentation Link: https://developer.apple.com/documentation/uikit/uitextinput/1614518-caretrectforposition

+2

Ist das ein dokumentiertes Verfahren? (EDIT: Ja, es ist in der 'UITextInput' Protokoll, das' UITextView' entspricht (https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UITextInput_Protocol/index.html#//apple_ref/occ/intf/UITextInput). – oztune

+0

wirklich nützlich, Daumen nach oben! – KkMIW

+0

Wenn dieser Text markieren die Griffe sind wirklich groß, keine Ahnung, wie man es beheben? –

7

Und für Swift 2. x oder Swift 3. x:

import UIKit 

class MyTextView : UITextView { 
    override func caretRectForPosition(position: UITextPosition) -> CGRect { 
     var superRect = super.caretRectForPosition(position) 
     guard let isFont = self.font else { return superRect } 

     superRect.size.height = isFont.pointSize - isFont.descender 
      // "descender" is expressed as a negative value, 
      // so to add its height you must subtract its value 

     return superRect 
    } 
} 
Verwandte Themen