Are you converting your view touch/click location to the renderer's viewport coordinate space?
let xScale = drawableSize.width/view.frame.width
let yScale = drawableSize.height/view.frame.height
let locationInViewport = CGPoint(x: locationInView.x*xScale, y: locationInView.y*yScale)
renderer.hitTest(locationInViewport, options: nil)
I seem to vagely remember this happening to me. I believe the renderer has to actually render the nodes for hit testing to occur. Is it possible the rendering is not happening (you mentioned something about an offscreen renderer)?
In my case I was trying to increase the size of some small nodes so they could be more easily tapped. I think I changed their scale before the hit test and then restored it afterwards. This didn't work because the hit test used the cached bounding box when the object was last rendered.
As an aside, I did solve my problem by changing the boundingBox of the node before rendering . This doesn't afffect the rendering but does affect the hit testing.