2016-04-13 2 views
0

Мне нужно отклонить AlertView, когда пользователь прикасается куда угодно за пределами своих границ.Как отклонить UIAlertView при касании где-нибудь за его пределами?

Я знаю, что вы должны вызвать

alert.dismissViewControllerAnimated(true, completion: nil) 

уволить AlertView, но как я могу это сделать только тогда, когда пользователь касается где-нибудь еще, кроме одного из двух кнопок, которые являются частью зрения?

Это код, у меня после того, как предложение от Стива:

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

могли бы вы добавить UITapGestureRecognizer для просмотра и затем этот призыв Действие предупреждение. dismissViewControllerAnimated? – Steve

+1

Возможно, вы можете отобразить пользовательское оповещение. – simalone

ответ

2

когда вы представите ваше предупреждение называют его с обработчиком завершения, как это:

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

Примечание: Pre Swift 2.2 заменить

#selector(self.alertClose(_:)) 

с

Selector("alertClose") 

затем создать оповещения Закрыть функцию:

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

Я испытал это с быстрым 2.2 на iPhone 6

+0

это должно работать, просто сделайте ссылку на свое предупреждение –

+0

Я пробовал этот код, но он, похоже, не работает. Я называю presentViewController до или после вышеуказанного кода? – ZDaws

+0

Я получаю предупреждение: никакой метод не объявлен с помощью Objective-C selector 'alertClose:' – ZDaws

Смежные вопросы