2016-05-18 17 views
0

Ich baue eine Liste mit einer Checkbox-Funktion, wobei das Häkchen-Symbol ein Kind des leeren Kontrollkästchens ist. In touchesBegan: sollte die Checkbox bei jeder Berührung der Checkbox von Versteckt zu Unsichtbar und zurück gehen. Der Code sieht wie folgt aus:Versteckte Knoten werden nicht mit childnodewithname angezeigt

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    if let touch = touches.first { 
     location = touch.locationInNode(self) 
     for node in self.nodesAtPoint(location) { 
      if node.childNodeWithName("checkSymbol")?.hidden == true { 
       node.childNodeWithName("checkSymbol")?.hidden = false 
      } else if childNodeWithName("checkSymbol")?.hidden == false { 
       node.childNodeWithName("checkSymbol")?.hidden = true 
      } 
     } 
    } 
} 

Das Problem der childNode ist (der checkSymbol Knoten) wird von der .nodesAtPoint() Methode nicht abgeholt, wenn es versteckt ist. Das ist der Grund, warum ich versucht habe, mit dem obigen Ansatz zu umgehen, aber das Feld bleibt für weitere Berührungen aktiviert. Hat jemand einen Vorschlag wie man das beheben kann?

Antwort

1

Wenn Sie möchten, dass versteckte Knoten von nodesAtPoint abgeholt werden, können Sie Ihre Implementierung von immer wieder ausblenden.

Sie könnten alternativ node.zPosition = -1 verwenden, vorausgesetzt, Sie einen Hintergrund Knoten hinter mit zPosition 0 zu verbergen haben.

+0

Danke Cocojoe. Das ist eine gute Alternative –