【问题标题】:swift UIActivityIndicatorView adviceswift UIActivityIndi​​catorView 建议
【发布时间】:2016-06-30 21:52:06
【问题描述】:

我的 UIActivityIndi​​catorView 运行良好。但我的问题是如何防止应用程序用户在显示 UIActivityIndi​​cator 时通过应用程序导航或单击按钮?我想强制用户等到我正在运行的代码完成。这是我到目前为止所拥有的。任何帮助将不胜感激。

class ViewController: UIViewController {
    var activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: .WhiteLarge)

var timer = NSTimer()
    let delay = 4.5

override func viewDidLoad() {
    super.viewDidLoad()

    view.addSubview(activityIndicator)
    activityIndicator.translatesAutoresizingMaskIntoConstraints = false
    activityIndicator.color = UIColor.redColor()


    let horizontalConstraint = NSLayoutConstraint(item: activityIndicator, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant: 0)
    view.addConstraint(horizontalConstraint)

    let verticalConstraint = NSLayoutConstraint(item: activityIndicator, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: 0)
    view.addConstraint(verticalConstraint)
getBalance()
}

func delayedAction(){
        // time consuming code here that will run in the background with task

dispatch_async(dispatch_get_main_queue(), { () -> Void in
                        self.lblAccountBalance.text = "Account Balance " + myResult!
                        self.activityIndicator.stopAnimating();
                    })
    }

 func 
    getBalance () {
        activityIndicator.startAnimating()
        timer = NSTimer.scheduledTimerWithTimeInterval(delay, target: self, selector: #selector(delayedAction), userInfo: nil, repeats: false)
        }

【问题讨论】:

    标签: xcode swift spinner uiactivityindicatorview


    【解决方案1】:

    超级简单!

    self.view.userInteractionEnabled = false

    【讨论】:

      【解决方案2】:

      仅仅从视图控制器的视图中禁用用户交互可能并不总是如您所愿。如果该视图之外的任何按钮不在视图的层次结构中,那么它们将是可点击的。

      您应该做的是在应用程序级别暂时暂停用户交互:

      UIApplication.shared.beginIgnoringInteractionEvents()
      UIApplication.shared.endIgnoringInteractionEvents()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-09
        相关资源
        最近更新 更多