Swiftgram/submodules/Display/Display/ViewControllerTracingNode.swift
Peter 8f5a4f7dc1 Add 'submodules/Display/' from commit '7bd11013ea936e3d49d937550d599f5816d32560'
git-subtree-dir: submodules/Display
git-subtree-mainline: 9bc996374ffdad37aef175427db72731c9551dcf
git-subtree-split: 7bd11013ea936e3d49d937550d599f5816d32560
2019-06-11 18:44:37 +01:00

38 lines
1020 B
Swift

import Foundation
import UIKit
import AsyncDisplayKit
private final class ViewControllerTracingNodeView: UITracingLayerView {
private var inHitTest = false
var hitTestImpl: ((CGPoint, UIEvent?) -> UIView?)?
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
if self.inHitTest {
return super.hitTest(point, with: event)
} else {
self.inHitTest = true
let result = self.hitTestImpl?(point, event)
self.inHitTest = false
return result
}
}
}
open class ViewControllerTracingNode: ASDisplayNode {
override public init() {
super.init()
self.setViewBlock({
return ViewControllerTracingNodeView()
})
}
override open func didLoad() {
super.didLoad()
(self.view as! ViewControllerTracingNodeView).hitTestImpl = { [weak self] point, event in
return self?.hitTest(point, with: event)
}
}
}