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 != "")
}

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...