在Swift中,self.view.isUserInteractionEnabled = false可以替代吗?

时间:2018-10-29 09:56:33

标签: swift

i我有一个正在执行Bakcgorund工作的Xcode应用程序。 这样做是为了阻止用户再次按下登录按钮,我正在使用:

self.view.isUserInteractionEnabled = false

唯一的问题是用户在屏幕上看不到任何东西,并且可能认为应用程序只是卡住了。 您是具有视觉帮助以显示屏幕被遮挡的替代方法吗? (不开发此类对话框)

4 个答案:

答案 0 :(得分:2)

禁用登录按钮(和其他任何控件),而不是整个视图:

loginButton.isEnabled = false

如果您不喜欢默认外观(略呈灰色),则可以根据自己的喜好设置按钮的禁用状态。

答案 1 :(得分:0)

仅阻止UIButton的交互。

在按钮上单击:-

sender.isUserInteractionEnabled = false 

完成请求后,将其启用:-

btnName.isUserInteractionEnabled = true

答案 2 :(得分:0)

您可以在启动后台任务时设置一个标志,并在任务完成时将其重置

fileprivate var isLoading:Bool = false


func startBackgroundTask() {
   guard !isLoading else { return } // if task is running just return
   isLoading = true
   // don't forget to reset it on background task complete
}

答案 3 :(得分:0)

您可以使用UIActivityIndicator来满足这种要求。

UIActivityIndicator的{​​{1}}上添加viewController,并在storyboard类中创建outlet

viewController's

点击@IBOutlet weak var activityIndicator: UIActivityIndicatorView!

  1. 设置loginButton
  2. 开始使用self.loginButton.isEnabled = falseactivityIndicator制作动画

完成后台工作

  1. 设置activityIndicator.startAnimating()
  2. 停止使用self.loginButton.isEnabled = trueactivityIndicator设置动画

示例:

activityIndicator.stopAnimating()