Вы можете добавить себя в качестве наблюдателя (в смысле NSNotificationCenter, а не в смысле KVO / Bindings) NSViewBoundsDidChangeNotification из таблицы -enclosingScrollView -contentView и при необходимости реагировать на основе видимого прямоугольника.
Обновление
Сделайте это где-нибудь (возможно, -awakeFromNib):
// Configure the scroll view to send frame change notifications
id clipView = [[tableView enclosingScrollView] contentView];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(myBoundsChangeNotificationHandler:)
name:NSViewBoundsDidChangeNotification
object:clipView];
Поместите это где-нибудь полезное:
- (void)myBoundsChangeNotificationHandler:(NSNotification *)aNotification
{
if ([aNotification object] == [[tableView enclosingScrollView] contentView])
[self doSomethingInterestingIfDocumentVisibleRectSatisfiesMe];
}
По сути, вы хотите изучить свитокпросмотрите -documentVisibleRect
, чтобы увидеть, видна ли нижняя пара пикселей.Не забудьте учесть возможность представлений с перевернутыми системами координат - «перевернутые виды» - описанных в Руководстве по программированию Представления .