当前位置: 首页 > 面试题库 >

检查UIAlertController TextField以启用按钮

孟和玉
2023-03-14
问题内容

我有一个带文本字段和两个按钮的AlertController:CANCEL和SAVE。这是代码:

@IBAction func addTherapy(sender: AnyObject)
{
    let addAlertView = UIAlertController(title: "New Prescription", message: "Insert a name for this prescription", preferredStyle: UIAlertControllerStyle.Alert)

    addAlertView.addAction(UIAlertAction(title: "Cancel",
                                         style: UIAlertActionStyle.Default,
                                         handler: nil))

    addAlertView.addAction(UIAlertAction(title: "Save",
                                         style: UIAlertActionStyle.Default,
                                         handler: nil))

    addAlertView.addTextFieldWithConfigurationHandler({textField in textField.placeholder = "Title"})


    self.presentViewController(addAlertView, animated: true, completion: nil)


}

我想做的是在文本字段上执行检查,以在文本字段为空时禁用SAVE按钮,就像要创建NewAlbum的iOS图片应用程序一样。请有人可以解释我该怎么办?


问题答案:

我首先将创建一个最初禁用保存操作的alertcontroller。然后,在添加文本字段时,请插入一个Notification,以观察其在处理程序中的更改,并在该选择器中切换“启用保存操作”属性。

我的意思是:

//hold this reference in your class
weak var AddAlertSaveAction: UIAlertAction?

@IBAction func addTherapy(sender : AnyObject) {

    //set up the alertcontroller
    let title = NSLocalizedString("New Prescription", comment: "")
    let message = NSLocalizedString("Insert a name for this prescription.", comment: "")
    let cancelButtonTitle = NSLocalizedString("Cancel", comment: "")
    let otherButtonTitle = NSLocalizedString("Save", comment: "")

    let alertController = UIAlertController(title: title, message: message, preferredStyle: .Alert)

    // Add the text field with handler
    alertController.addTextFieldWithConfigurationHandler { textField in
        //listen for changes
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "handleTextFieldTextDidChangeNotification:", name: UITextFieldTextDidChangeNotification, object: textField)
    }


    func removeTextFieldObserver() {
        NSNotificationCenter.defaultCenter().removeObserver(self, name: UITextFieldTextDidChangeNotification, object: alertController.textFields[0])
    }

    // Create the actions.
    let cancelAction = UIAlertAction(title: cancelButtonTitle, style: .Cancel) { action in
        NSLog("Cancel Button Pressed")
        removeTextFieldObserver()
    }

    let otherAction = UIAlertAction(title: otherButtonTitle, style: .Default) { action in
        NSLog("Save Button Pressed")
        removeTextFieldObserver()
    }

    // disable the 'save' button (otherAction) initially
    otherAction.enabled = false

    // save the other action to toggle the enabled/disabled state when the text changed.
    AddAlertSaveAction = otherAction

    // Add the actions.
    alertController.addAction(cancelAction)
    alertController.addAction(otherAction)

    presentViewController(alertController, animated: true, completion: nil)
}

    //handler
func handleTextFieldTextDidChangeNotification(notification: NSNotification) {
    let textField = notification.object as UITextField

    // Enforce a minimum length of >= 1 for secure text alerts.
    AddAlertSaveAction!.enabled = textField.text.utf16count >= 1
}

我正在另一个项目中执行此操作-
我直接从Apple示例获得了此模式。他们有一个很好的示例项目,概述了UICatalog示例中的一些模式:https
:
//developer.apple.com/library/content/samplecode/UICatalog/Introduction/Intro.html




 类似资料:
  • 用户可以选择他/她想选择的任何一个,但是当某个事件触发时,我希望将设置为set checked单选按钮,因为这是默认的checked单选按钮。 我已经尝试了这个版本(有jQuery和没有jQuery):

  • 我是检票口开发的初学者。我有一个关于弹出对话框的问题。当我点击按钮时会触发此对话框。 此对话框包含一个复选框(Accept terms)和下面的几个单选按钮,以及两个按钮,一个是cancel,另一个是Accept。 我的问题是,我需要确保,我选择了复选框和一个无线电来设置按钮“Accept”以启用状态,否则它应该被密封(enabled=false)。 问题是单选按钮位于不同的文件中(它们位于其他文

  • 问题内容: 我正在尝试编写一个分辨率选择对话框,该对话框在程序首次启动时会弹出。为避免使用户感到无聊,我想实现相当标准的功能,即可以通过选中复选框关闭该对话框,但在启动时按住alt键即可恢复该对话框。 不幸的是,没有明显的方法来询问java 当前 是否 正在按下 给定的键。您只能通过KeyListener进行注册,以获知新的按键操作,但是如果按键在应用程序启动之前启动,则无济于事。 问题答案:

  • 问题内容: 我正在一个需要JavaScript和会话的页面上工作。我已经有代码来警告用户是否禁用了javascript。现在,我想处理禁用cookie的情况,因为会话ID存储在cookie中。 我只想到了几个主意: 将会话ID嵌入链接和表单中 警告用户如果禁用了cookie,则必须启用cookie(需要帮助来检测cookie是否被禁用) 解决此问题的最佳方法是什么?谢谢 编辑 根据链接的文章,我想

  • Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题,默认 check="true"。 可以通过 check="false" 关闭检查,比如,测试时,有些服务不关心,或者出现了循环依赖,必须有一方先启动。 另外,如果你的 Spring 容器是懒加载的,或者通过 API 编程延迟引用服务,请关闭 check,否则服务临时不可

  • 问题内容: 有没有一种方法可以检查php脚本是否在服务器上启用或禁用? 问题答案: