Próbuję utworzyć NSTextView, który rośnie pionowo, gdy użytkownik wpisuje i przewija, gdy wysokość osiągnęła maksimum. Jest to podobne do widoku tekstowego w Wiadomościach działa.Growing NSTextView pasuje do zawartości jest wycinanie ostatniej linii tekstu
Moja pierwsza próba wykorzystuje delegata do nasłuchiwania zmian tekstowych i ustawić ograniczenie wysokości związane z NSTextView za przewijania Widok:
- (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));
}
To prawie działa: wysokość widoku tekstowego (przewijania widoku danych) jest aktualizowana jak ja typ, jednak ostatnia linia tekstu jest obcięty:
Gdy widok przewijania osiągnie wysokość to max i rozpoczyna przewijanie działa ładnie. Próbowałem wymusić aktualizację wyświetlania/układu/ograniczenia w otaczającym widoku przewijania bez powodzenia. Domyślam się, że widok przewijania widoku przewijania nie jest poprawnie aktualizowany i przycina dolną część widoku tekstu. Czy jest jakiś sposób zmusić widok klipu/przewijania widoku do aktualizacji odpowiednio, gdy ograniczenie się zmienia?
Rozwiązałeś to? – KVISH