UIButton 的 isEnabled 功能不起作用

Posted

技术标签:

【中文标题】UIButton 的 isEnabled 功能不起作用【英文标题】:UIButton's isEnabled feature does not work 【发布时间】:2019-09-27 09:57:55 【问题描述】:

我目前正在从事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。没有发现问题。请提出解决方案

【问题讨论】:

你的功能看起来不错,你得到成功的结果了吗? 您是否已通过调试确认您的sender.isEnabled = false 行实际上已到达? 【参考方案1】:

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

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

我正在我的虚拟项目中进行测试,两者都工作相同,只需尝试一次@thankyou

【讨论】:

【参考方案2】:

请创建按钮的出口并使 button.isEnable 为 false。它应该可以正常工作。

【讨论】:

这是一个输出函数。通过滚动故事板上的按钮创建的功能。【参考方案3】:

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

或者也许分享完整的代码,否则我们只能通过阅读你的 sn-p 来猜测。

顺便说一句,有时清理项目会非常有用..

【讨论】:

以上是关于UIButton 的 isEnabled 功能不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用imageView外观禁用UIButton而不将isEnabled设置为false

使带有 imageView 的 UIButton 看起来被禁用而不将 isEnabled 设置为 false

UIButton 在 collectionView 单元格中不起作用

WPF IsEnabled 和 IsHitTestVisible

UIButton setTitleColor 和 setImage 不起作用

将CABasicAnimation添加到子类UIButton - 如果已启用