У меня есть Subclassed SKSpriteNode в качестве кнопки меню ()
MenuButton () содержит 2 детей:
Когда запускается нижеприведенное, если пользователь касается части кнопки, содержащей изображение или текст (дочерние элементы MenuButton ()), он не выполняется, поскольку изображение / текст имеют другое имя для кнопки и они первые touchedNode
.
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
guard let touch = touches.first else { return }
let location = touch.location(in: self)
let touchedNode = atPoint(location)
let touchedNodeName = atPoint(location).name
if let nodeName = touchedNodeName, nodeName == ("btnPlay") { self.showGameModeMenu() }
}
Ранее я использовал:
let touchedNodes = nodes(at: location)
for node in nodes {
if let nodeName = node.name, nodeName == "btnPlay" { self.showGameModeMenu() }
}
Однако, когда другой узел (btnCloseLeaderboard
) представлен поверх btnPlay
, он проходит по циклу и выполняет оба, а не только самый верхний узел (btnCloseLeaderboard
)
Я попытался установить isUserInteractionEnabled = false
для дочерних узлов, но это не работает. Тогда он все еще рассматривается как самый верхний узел.
Как мне предотвратить это?