UIButton的isEnabled功能不起作用

时间:2019-09-27 09:57:55

标签: ios swift uibutton

我目前正在从事ios项目。

我的问题isEnabled功能不起作用。将值设置为True可以成功运行,但是对False的更改不会更改。

我想念什么?

我的代码使用Swift5

    @IBAction func nextScreen(_ sender: UIButton) {
        if self.nickField.text!.count > 12 {
            callAlert("long nick")
        } else {
    let url: URL = URL(string: globalUrl.apiAddress)!

            var dict = [String: String]()
            dict["nickname"] = self.nickField.text!
            sender.isEnabled = true
            do {
                try globalUrl.post(url: url, dict, encoding: .utf8, completionHandler: { data, response, error in
                    guard error == nil && data != nil else {
                        if let err = error {
                            print(err.localizedDescription)
                        }
                        return
                    }

                    do {
                        let json = try JSONSerialization.jsonObject(with: data!, options: [])
                        Log.Debug(json)
                        guard let jsonArray = json as? [String: Any] else {
                            return
                        }

                        if jsonArray["result"] == "Sucess" {
                            Log.Debug("Success")
                            DispatchQueue.main.async {
                                globalnickname = self.nickField.text!
                                sender.isEnabled = false
                                self.performSegue(withIdentifier: "go", sender: self)
                            }
                        } else {
                            DispatchQueue.main.async {
                                Toast(text:"error").show()
                                sender.isEnabled = false
                            }
                        }
                    } catch {
                        Log.Error(error)
                    }
                })
            } catch {
                Log.Error(error)
            }

        }

从我的代码中可以看到,该函数在执行时更改为true,在完成时更改为False。但是它不会更改为False。没问题。请提出解决方案

3 个答案:

答案 0 :(得分:0)

您好,您的代码是完美的,没有问题,

请将sender.isEnabled替换为sender.isUserInteractionEnabled = false,我认为两者都使用相同的属性,

我正在测试我的虚拟项目中两个项目的工作原理相同,只需尝试一次@thankyou

答案 1 :(得分:0)

请检查您的代码,isEnabled应该可以正常工作。尝试在没有任何业务逻辑的单独示例中进行操作。

或者共享完整的代码,否则我们可以通过阅读您的代码片段来猜测。

顺便说一句,有时清理项目对我有神奇的帮助。

enter image description here

答案 2 :(得分:0)

请创建按钮的出口,并使button.isEnable为false。应该可以。