Ok, have it down to three files, and am not receiving touchesBegan for the red ball. I'd rather it be something stupid I did and be scolded for that
GVC
import SpriteKit
import SwiftUI
class GameViewController: UIViewController {
		public let myView : SKView = {
				let myView = SKView()
				myView.translatesAutoresizingMaskIntoConstraints = false
				return myView
		}()
		override func viewDidLayoutSubviews() {
				super.viewDidLayoutSubviews()
				if myGlobalVars.safeSceneRect == .zero {
						myGlobalVars.sceneRect = view.frame
						myGlobalVars.sceneRect = myView.frame
				}
				
				if #available(iOS 11.0, *) {
						myGlobalVars.topSafeArea		= view.safeAreaInsets.top
						myGlobalVars.bottomSafeArea = view.safeAreaInsets.bottom
				} else {
						myGlobalVars.topSafeArea		= topLayoutGuide.length
						myGlobalVars.bottomSafeArea = bottomLayoutGuide.length
				}
				
				if myGlobalVars.gameScene == nil {
						let scene = GameScene(size: myView.frame.size )
						scene.anchorPoint = CGPoint(x: 0.0, y: 0.0)
						scene.backgroundColor	 = .clear
						scene.scaleMode				 = .aspectFit
						myGlobalVars.gameScene = scene
						myView.presentScene(scene)
				}
		}
		override func viewWillLayoutSubviews() {
				super.viewWillLayoutSubviews()
		}
		override func viewDidLoad() {
				super.viewDidLoad()
				view.addSubview(myView)
				myView.isHidden						 = false
				myView.ignoresSiblingOrder	= true
				myView.showsFPS						 = true
				myView.showsNodeCount			 = true
				myView.showsPhysics				 = true
		}
	
		override var shouldAutorotate: Bool {
				return false
		}
		override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
				if UIDevice.current.userInterfaceIdiom == .phone {
						return .portraitUpsideDown
				} else {
						return .all
				}
		}
		override var prefersStatusBarHidden: Bool {
				return false
		}
}
GC
import SpriteKit
import SwiftUI
struct GlobalVars{
		var backGround			: SKSpriteNode?
		var sceneRect			 : CGRect
		var safeSceneRect	 : CGRect
		var gameScene			 : GameScene?
		var topSafeArea		 : CGFloat
		var bottomSafeArea	: CGFloat
}
struct ScreenDimensions{
		var widthPix				: CGFloat
		var heightPix			 : CGFloat
		var widthPts				: CGFloat
		var heightPts			 : CGFloat
}
var myGlobalVars = GlobalVars(backGround: nil, sceneRect: .zero, safeSceneRect: .zero, gameScene: nil, topSafeArea: 0.0, bottomSafeArea: 0.0)
class GameScene: SKScene, SKPhysicsContactDelegate{
		override func sceneDidLoad(){
				super.sceneDidLoad()
						print ("GC sceneDidLoad")
		}
		
		override func didMove(to view: SKView){
				super.didMove(to: view)
				physicsWorld.contactDelegate = self
				self.isHidden = true
				myGlobalVars.backGround = SKSpriteNode(imageNamed: "background")
				myGlobalVars.backGround!.zPosition = -1
				myGlobalVars.safeSceneRect = view.frame
				myGlobalVars.gameScene = self
				self.isHidden = false
				self.isUserInteractionEnabled = false
				self.addChild(myGlobalVars.backGround!)
				let myAll = MyGem()
				self.addChild(myAll)
		}
		
		
		override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?){
				super.touchesBegan(touches, with: event)
				#if DEBUG
						print ("touches began")
				#endif
		}
}
Gem
import Foundation
import SpriteKit
class MyGem : SKSpriteNode{
		init(){
		let skTexture = SKTexture(imageNamed: "gem_red")
				super.init(texture: skTexture, color: .clear, size: CGSize(width: 67, height: 67))
		self.anchorPoint = CGPoint(x: 0.5, y: 0.5)
		self.size = CGSize(width: 67, height: 67)
		self.zPosition = 2
		self.position = CGPoint(x: 0, y: 0 )
		self.position = CGPoint(x: 67/2 + 50,
														 y: 67/2 + 50)
		self.size = CGSize(width: 67, height:	67)
		self.isHidden = false;
		self.isUserInteractionEnabled = true
		}
		
		required init?(coder aDecoder: NSCoder) {
				fatalError("init(coder:) has not been implemented")
		}
}