swift – 防止解除UIAlertController

前端之家收集整理的这篇文章主要介绍了swift – 防止解除UIAlertController前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
添加一个UITextField到一个UIAlertController,它显示为一个AlertView。在关闭UIAlertController之前,我想验证UITextField的输入。基于验证我想忽略UIAlertController或不。但我没有线索如何防止UIAlertController的按下按钮时关闭动作。有没有人解决这个问题或任何想法从哪里开始?我去google,但没有运气:/谢谢!
您是正确的:如果用户可以点击您的快讯中的按钮,该提醒将被关闭。所以你想防止用户点击按钮!这只是一个问题,禁用您的UIAlertAction按钮。如果禁用警报操作,则用户无法点按它以关闭

要将此与文本字段验证结合使用,请使用文本字段委托方法或操作方法(在创建文本字段的配置处理程序时配置),以根据输入的文本(或未输入)适当地启用/禁用UIAlertActions 。

这里有一个例子。我们创建了这样的文本字段:

alert.addTextFieldWithConfigurationHandler {
    (tf:UITextField!) in
    tf.addTarget(self,action: "textChanged:",forControlEvents: .EditingChanged)
}

我们有一个取消操作和一个确定操作,我们带来了确定行动到世界禁用:

(alert.actions[1] as UIAlertAction).enabled = false

随后,用户无法点击确定,除非文本字段中有一些实际文本:

func textChanged(sender:AnyObject) {
    let tf = sender as UITextField
    var resp : UIResponder = tf
    while !(resp is UIAlertController) { resp = resp.nextResponder() }
    let alert = resp as UIAlertController
    (alert.actions[1] as UIAlertAction).enabled = (tf.text != "")
}

EDIT这里是当前(Swift 3.0.1)版本的上述代码

alert.addTextField { tf in
    tf.addTarget(self,action: #selector(self.textChanged),for: .editingChanged)
}

alert.actions[1].isEnabled = false

func textChanged(_ sender: Any) {
    let tf = sender as! UITextField
    var resp : UIResponder! = tf
    while !(resp is UIAlertController) { resp = resp.next }
    let alert = resp as! UIAlertController
    alert.actions[1].isEnabled = (tf.text != "")
}

猜你在找的Swift相关文章