2016-07-27 22 views
1

Ich arbeite in Xcode und swift, ich habe eine Ansicht erstellt als ein Menü, schaltet sich durch Tippen auf, wenn das Menü herauskommt kann ich immer noch eine Test-Taste darunter klicken. Ich möchte nicht, dass das passiert. Ich möchte, dass alles hinter der Ansicht deaktiviert wird, wobei der Menüansicht Vorrang eingeräumt wird. (Bild anzeigen unten)Prevent Klick durch Sicht in Swift

screenshot from the sample app

  • Denken Sie daran, dass ich nicht eine Taste unter Berücksichtigung, wenn das der Fall war ich, dass bestimmte Taste deaktiviert haben würde. Diese Seite wird eine Bildlaufansicht sein und dynamisch sein.

dies ist der Code, den ich verwende:

@IBAction func MenuButton(sender: UIButton) { 
    if self.MenuView.frame.origin.x == -180 { 
     UIView.animateWithDuration(0.5, animations:{ 
      self.MenuView.frame = CGRectMake(self.MenuView.frame.origin.x + 180, self.MenuView.frame.origin.y, self.MenuView.frame.size.width, self.MenuView.frame.size.height) 
     }) 

    } else { 
     UIView.animateWithDuration(0.5, animations:{ 
      self.MenuView.frame = CGRectMake(self.MenuView.frame.origin.x - 180, self.MenuView.frame.origin.y, self.MenuView.frame.size.width, self.MenuView.frame.size.height) 
     }) 
    } 
} 

die Ansicht 180 Pixel auf der linken Seite versteckt ist, wenn die Menütaste die Ansicht 180 Pixel geklickt wird auf der rechten Seite animieren wird die bringt es nach vorne. Die Funktion prüft, ob die Ansicht bereits geöffnet ist, sodass sie 180 Pixel zurück animiert werden kann, um sie zu verbergen.

Das einzige, was ich brauche, ist das Deaktivieren des Klickens durch die Ansicht.

Antwort

0

Die Tatsache, dass die Schaltfläche immer noch sichtbar und anklickbar ist, bedeutet, dass sie sich vor dem Menü befinden muss. Wenn Sie die Reihenfolge der Dinge so ändern, dass sich das Menü vor der Schaltfläche befindet, sollten Sie das Ergebnis erhalten, nach dem Sie suchen.

+0

Danke, das es zu lösen. Ich bin neu Ich dachte, eine Ansicht (Div) vor ein anderes Element zu bringen wird es deaktivieren Ich weiß nicht, warum Apple es so komplex machen musste Danke trotzdem –

+1

@ YousifAl-Raheem Es gibt einen Fall, dass die Ansicht passieren wird die Berührung der Schaltfläche, auch wenn sie unter der Ansicht ist. Dieser Fall, wenn die Ansicht 'User Interaction Enabled'' false' ist – Ismail

+0

@Ismail: Guter Punkt. – Westside

1

Swift 3-Version, die gut für mich funktioniert hat, um den Klick zu stoppen (dank dem vorherigen Kommentar von @Ismail).

myAddedSubView.isUserInteractionEnabled = true 

Dies ist die 'einfache, one-line' Antwort und funktioniert wie z Index (vorausgesetzt, Sie den z-Index sein 'absolute Spitze' wollten.