Swiftgram/TelegramUI/FixSearchableListNodeScrolling.swift
2018-08-03 23:23:02 +03:00

30 lines
1015 B
Swift

import Foundation
import AsyncDisplayKit
import Display
func fixSearchableListNodeScrolling(_ listNode: ListView) {
var searchItemNode: ListViewItemNode?
var nextItemNode: ListViewItemNode?
listNode.forEachItemNode({ itemNode in
if let itemNode = itemNode as? ChatListSearchItemNode {
searchItemNode = itemNode
} else if searchItemNode != nil && nextItemNode == nil {
nextItemNode = itemNode as? ListViewItemNode
}
})
if let searchItemNode = searchItemNode {
let itemFrame = searchItemNode.apparentFrame
if itemFrame.contains(CGPoint(x: 0.0, y: listNode.insets.top)) {
if itemFrame.minY + itemFrame.height * 0.6 < listNode.insets.top {
if let nextItemNode = nextItemNode {
listNode.ensureItemNodeVisibleAtTopInset(nextItemNode)
}
} else {
listNode.ensureItemNodeVisibleAtTopInset(searchItemNode)
}
}
}
}