2016-04-13 33 views
0

我需要關閉一個AlertView時,用戶觸摸任何地方以外的任何地方。如何在觸摸它外面的任何地方時解除UIAlertView?

我知道你要調用

alert.dismissViewControllerAnimated(true, completion: nil) 

駁回AlertView,但我要如何做到這一點,只有當用戶觸摸其他地方除了兩個按鈕是視圖的一部分嗎?

這是史蒂夫的建議後,我的代碼有:

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

注:預斯威夫特

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

當您出示您的警報,完成處理這樣叫它2.2替換

#selector(self.alertClose(_:)) 

Selector("alertClose") 

然後創建警報關閉功能:

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

我與SWIFT 2.2在iPhone 6

+0

這應該工作,只是提醒你的警報 –

+0

我試過這段代碼,但它似乎並沒有工作。在上面的代碼之前或之後,我要調用presentViewController嗎? – ZDaws

+0

我得到一個警告:沒有任何方法用Objective-C選擇器'alertClose'聲明:' – ZDaws

相關問題