12
Sto cercando di implementare lo scorrimento uniforme in una cronologia chat che ho implementato, tuttavia se il contenuto che aggiungo è abbastanza grande, lo scroll scorrevole scorrerà solo per alcune righe.NSTextView, aggiunta di testo e scorrimento uniforme
La mia prima ipotesi è che la vista non si è ancora ridisegnata. Non è il caso, anche quando si costringe a disegnare immediatamente con -display si rompe ancora.
- (void)scrollAnimated:(BOOL)animated
{
if(animated)
{
NSClipView *clipView = [[_chatHistoryView enclosingScrollView] contentView];
[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration:0.100f];
NSPoint constrainedPoint = [clipView constrainScrollPoint:NSMakePoint(0, CGFLOAT_MAX)];
[[clipView animator] setBoundsOrigin:constrainedPoint];
[NSAnimationContext endGrouping];
}
else
{
NSRange range;
range.location = [[_chatHistoryView textStorage] length];
range.length = 1;
[_chatHistoryView scrollRangeToVisible:range];
}
}
Cosa sto facendo male?
Sono sicuro che questo non risolverà il problema, ma il codice non animato la vostra gamma sarà fuori dai limiti in quanto terminerà alla fine + 1. – mattmook
State usando quel codice per un po ', probabilmente dovrei cercare nei documenti perché la (posizione + 1) dell'ultimo carattere (poiché la lunghezza è (posizione + 1) credo) viene accettata. –