我正在尝试在我实现的聊天历史视图中实现平滑滚动,但是如果我附加的内容足够大,平滑滚动只会滚动几行。
我的第一个猜测是视图本身还没有重绘..不是这种情况,即使使用 -display 强制立即绘图它仍然会中断。
- (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];
}
}
我究竟做错了什么?