2015-04-17 9 views
6

Ho un UITableViewCell sottoclasse che contiene un UITextView. Ho aggiunto NSParagraphStyle come attributo alla stringa in un NSTextStorage sottoclassato. Nel codice seguente, ho aumentato lo spazio tra ogni riga in UITextView.La modifica della proprietà di interlinea in NSParagraphStyle causa l'allungamento del cursore

altezza rapida

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

Il cursore allunga fino all'altezza della riga successiva, come mostrato di seguito. Questo succede solo sulle file prima dell'ultima riga.

enter image description here

Ho guardato diversi messaggi su SO quanto riguarda questa edizione, tra cui this post; tuttavia, nessuna delle soluzioni proposte sembra funzionare per me.

Ho letto la documentazione di TextKit ma non ho trovato alcuna soluzione per questo problema.

C'è un modo per ridurre l'altezza del cursore?

risposta

0

Questo funziona come progettato ed è lo stesso su Mac. Ha lo scopo di fornire all'utente un riscontro visivo sia della linea su cui si trova sia dell'altezza di quella linea. Dovresti riflettere attentamente prima di cambiarlo solo perché non ti piace come sembra.

Detto questo, il metodo nel post SO che hai collegato sopra è l'approccio generale per la regolazione del cursore (anche se potrebbe essere necessario regolare anche l'origine rettale corretta). Che cosa non ha funzionato per te? Sarebbe meglio iniziare da lì.

0

una risposta relativa a questo problema è riportata in questa discussione. appena incollato qui per riferimento futuro. iOS - UITextView lineSpacing make cursor height not same

"si potrebbe cambiare l'altezza cursore sottoclasse l'UITextView, quindi eseguire l'override del caretRectForPosition:. Funzione di posizione Ad esempio:

  • (CGRect) caretRectForPosition: (UITextPosition *) posizione { CGRect originalRect = [ Super caretRectForPosition: posizione]; originalRect.size.height = 18,0; ritorno originalRect; } "