У меня есть NSTableView с одним столбцом, заполненным методами NSTableViewDataSource (без привязок). NSTableView находится внутри NSScrollView, как и поведение по умолчанию, когда вы перетаскиваете NSTableView из библиотеки в Interface Builder. Содержимое табличного представления заполняется на основе вводимой пользователем строки поиска и не изменяется после этого момента.
Я реализую только эти два метода протокола DataSource:
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView;
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row;
После ввода строки поиска фокус все еще находится в NSTextField, но я могу, естественно, прокручивать табличное представление колесом прокрутки мыши или стрелками на полосе прокрутки. Ни то, ни другое не заставляет табличное представление получать кольцо фокусировки. Однако, если я прокручиваю вниз так, что я не нахожусь в верхней части табличного представления, а затем щелкаю, чтобы выделить отдельную строку в табличном представлении, табличное представление вместо этого перескакивает обратно наверх, а затем выбирает любую строку, которая находится под моей мышью в этот момент . Если я нажимаю на строки после этого момента, все работает, как ожидалось.
Другими словами, если вокруг NSTableView есть кольцо фокусировки, щелчок по строке выделяет ожидаемую строку. Если вокруг него нет кольца фокусировки, щелчок по строке выбирает любую строку, которая находится в этой позиции после прокрутки вверх.
Любое понимание? Я бегаю со Snow Leopard, но, думаю, это случилось и с Leopard.