2016-06-30 107 views
0

我有一個UIActivityIndi​​catorView運行良好。但我的問題是,如何防止應用程序用戶通過應用程序導航,或者在顯示UIActivityIndi​​cator時單擊按鈕?我想強制用戶等到我運行的代碼完成。這是我到目前爲止。任何幫助將不勝感激。swift UIActivityIndi​​catorView advice

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) 
     } 

回答

1

超級簡單!

self.view.userInteractionEnabled =像您期望從視圖控制器的視圖假

1

簡單地禁用用戶的交互可能並不總是工作。如果該視圖之外的任何按鈕不在視圖的層次結構中,那麼它們將是可點擊的。

你應該做的是暫時中止在應用層的用戶交互:

UIApplication.shared.beginIgnoringInteractionEvents() 
UIApplication.shared.endIgnoringInteractionEvents() 
相關問題