防止解雇UIAlertController

乔纳·于尔根

我增加了UITextField一个UIAlertController,这似乎为AlertView在关闭之前UIAlertController,我想验证的输入UITextField基于验证,我想关闭UIAlertController还是不关闭但是我不知道如何防止UIAlertController按下按钮时的关闭动作有没有人解决了这个问题或从哪里开始的任何想法?我去了谷歌,但没有运气:/谢谢!

马特

您是正确的:如果用户可以点击警报中的按钮,则警报将被关闭。因此,您要防止用户点击按钮!只需禁用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 != "")
}

编辑这是上述代码的当前(Swift 3.0.1及更高版本)版本:

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

alert.actions[1].isEnabled = false

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

解雇UIAlertController(最佳做法)

来自分类Dev

防止UIAlertController关闭

来自分类Dev

如何防止触摸背景时被解雇UIActionSheet?

来自分类Dev

对UIAlertController的操作不会关闭AlertController吗?(禁用解雇)

来自分类Dev

如何在反应本机KeyboardAvoidingView中防止在触摸外部时键盘解雇

来自分类Dev

防止键盘自动出现在UIAlertController中

来自分类Dev

onFinishRender没有被解雇

来自分类Dev

如何解雇SKScene?

来自分类Dev

模态解雇如下

来自分类Dev

UIAlertView在返回时被解雇

来自分类Dev

resignFirstResponder与endEditing的键盘解雇

来自分类Dev

检测UIActivityViewController的解雇

来自分类Dev

NSPersistentStoreRemoteChangeNotification没有被解雇

来自分类Dev

OnTouchListener没有被解雇

来自分类Dev

快速解雇键盘

来自分类Dev

在异步中解雇任务

来自分类Dev

MailComposer 未被解雇

来自分类Dev

键盘没有被解雇

来自分类Dev

Busboy未解雇结束事件

来自分类Dev

重涂之后或之前解雇了“ onscroll”?

来自分类Dev

解雇任务观察者

来自分类Dev

Worksheet_SelectionChange不当被解雇

来自分类Dev

离子4模态背景解雇

来自分类Dev

OnLongClickListener-不被解雇+ Android

来自分类Dev

jQuery,ajax .done被解雇了吗?

来自分类Dev

对模态ViewController被解雇做出反应

来自分类Dev

Debian:Cron工作不解雇

来自分类Dev

$手表未被解雇

来自分类Dev

Swift /如何正确解雇rootViewController?