1
我有一個基於視圖的NSTableView顯示消息/信息的時間線。行高是可變的。新消息經常使用insertRows
在桌子的頂部增加:插入行時保持相同的NSTableView滾動位置
NSAnimationContext.runAnimationGroup({ (context) in
context.allowsImplicitAnimation = true
self.myTable.insertRows(at: indexSet, withAnimation: [.effectGap])
})
雖然用戶停留在表的頂部,消息不斷被插入在頂部,向下推動現有的:在這種情況下通常的行爲。
一切正常,除了如果用戶向下滾動,新插入的消息不應該使表滾動。
我希望tableView保持它在用戶滾動時的位置或用戶已向下滾動。
換句話說,如果頂部行100%可見,tableView只能被新插入的行按下。
我試圖把桌上的不是很快恢復其位置,這樣移動的錯覺:
// we're not at the top anymore, user has scrolled down, let's remember where
let scrollOrigin = self.myTable.enclosingScrollView!.contentView.bounds.origin
// stuff happens, new messages have been inserted, let's scroll back where we were
self.myTable.enclosingScrollView!.contentView.scroll(to: scrollOrigin)
但它不表現爲我想。我嘗試了很多組合,但我認爲我並不理解剪輯視圖,滾動視圖和表視圖之間的關係。
或者,也許我在XY問題區域,並有不同的方式來獲得這種行爲?
這正是我所需要的。非常感謝! – Moritz