2016-04-13 2 views
0

Ich muss eine AlertView ablehnen, wenn der Benutzer irgendwo außerhalb seiner Grenzen berührt.Wie verwerfen Sie eine UIAlertView, wenn Sie irgendwo außerhalb davon berühren?

Ich weiß, dass Sie

alert.dismissViewControllerAnimated(true, completion: nil) 

abzutun die Alertview nennen, aber wie mache ich es nur, wenn der Benutzer neben einer der beiden Tasten irgendwo anders berührt, dass ein Teil der Ansicht sind?

Dies ist der Code, den ich nach dem Vorschlag von Steve haben:

self.presentViewController(alert, animated: true, completion:{ 
     alert.view.superview?.userInteractionEnabled = true 
     alert.view.superview?.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.alertClose(_:)))) 
}) 

Hinweis: Pre Swift

presentViewController(alert, animated: true, completion: nil) 
    //Add gesture recognizer for alert ViewController when adding an event 
    let tapGesture = UITapGestureRecognizer(target: self, action: "alertClose:") 
    view.addGestureRecognizer(tapGesture) 
    //dismiss the alert if the user click anywhere except the buttons 
    func alertClose(gesture: UITapGestureRecognizer) { 
     alert.dismissViewControllerAnimated(true, completion: nil) 
    } 
+0

könnten Sie eine UITapGestureRecognizer hinzufügen anzuzeigen und dann die Warnung, die Aktion Anruf haben. disneyViewControllerAnimated? – Steve

+1

Vielleicht können Sie eine benutzerdefinierte Warnung anzeigen. – simalone

Antwort

2

, wenn Sie für Ihre Warnung es mit einem Abschluss-Handler wie folgt aufrufen präsentieren 2.2 ersetzen

#selector(self.alertClose(_:)) 

mit

Selector("alertClose") 

dann Ihre Warnung schließen Funktion erstellen:

func alertClose(gesture: UITapGestureRecognizer) { 
    self.dismissViewControllerAnimated(true, completion: nil) 
} 

Getestet habe ich diese mit schnellen 2.2 auf einem iPhone 6

+0

Dies sollte funktionieren, nur einen Verweis auf Ihre Warnung –

+0

Ich habe diesen Code versucht, aber es scheint nicht zu funktionieren. Soll ich presentViewController vor oder nach dem obigen Code aufrufen? – ZDaws

+0

Ich erhalte eine Warnung: Keine Methode mit Objective-C-Selektor 'alarmClose:' – ZDaws

Verwandte Themen