Sto provando a creare un NSTextView che cresce in verticale mentre l'utente digita e scorre quando l'altezza ha raggiunto il massimo. Questo è simile alla visualizzazione del testo in Messaggi funziona.La crescita di NSTextView per adattarsi al contenuto è ritagliata nell'ultima riga di testo
Il mio primo tentativo utilizza il delegato per l'ascolto di modifiche al testo e regolare il vincolo di altezza associata con la vista di scorrimento del NSTextView:
- (void)textDidChange:(NSNotification *)notification
{
NSTextView *textView = self.textView;
NSRect usedRect = [textView.textContainer.layoutManager usedRectForTextContainer:textView.textContainer];
NSLog(@"DEBUG: used rect: %@", NSStringFromRect(usedRect));
self.textViewHeightConstraint.constant = MIN(80.f, MAX(usedRect.size.height, 30.f));
}
Questo funziona quasi: (di vista di scorrimento) della vista altezza del testo viene aggiornata come ho tipo, tuttavia, viene tagliato l'ultima riga di testo:
Una volta che la vista di scorrimento raggiunge il suo altezza massima e comincia a scorrimento funziona bene. Ho provato a forzare un aggiornamento di visualizzazione/layout/vincolo sulla vista a scorrimento chiusa senza fortuna. La mia ipotesi è che la visualizzazione di clip della vista di scorrimento non si aggiorni correttamente e che si ritagli nella parte inferiore della visualizzazione di testo. C'è un modo per forzare la visualizzazione clip/vista di scorrimento per aggiornare in modo appropriato quando il vincolo cambia?
Hai risolto questo? – KVISH