0

我有一個UIActivityViewController,允許圖像被共享給Facebook(如果配置了系統範圍的Facebook帳戶)。從UIActivityViewController分享到Facebook的顯示活動指標?

可正常工作,但一旦Facebook圖標的操作,則呈現了Facebook分享對話框之前有幾秒鐘的延遲。圖像已經在內存中,所以我不確定滯後來自哪裏,儘管我懷疑它必須來自Facebook並等待迴應。

我看不出有任何可能的方式來顯示從直至出現的對話框中,Facebook的圖標被點擊的時間不確定UIActivityIndicatorView。有誰知道一種方式?

回答

0

剛剛有類似的問題!我想對我的Web應用程序執行一次HTTP調用,這是必要的,所以我需要一個推文的URL。 (在我的情況下,它更復雜,因爲對Web應用程序的調用也在異步線程中。)有兩種方法可以實現它...您可以向故事板添加活動指示器視圖並按照此處所述創建IBActions: http://sourcefreeze.com/uiactivityindicatorview-example-using-swift-in-ios/

我發現它更簡單,只是通過代碼添加UIActivityIndicatorView。當你的類的成員:權之前

func startActtivityIndicator(){ 

    activityIndicator.center = self.view.center 
    activityIndicator.hidesWhenStopped = true 
    self.view.addSubview(activityIndicator) 
    activityIndicator.startAnimating() 

} 

func stopActtivityIndicator(){ 

    activityIndicator.stopAnimating() 
    activityIndicator.removeFromSuperview() 

} 

然後調用startActivityIndicator()在你的按鈕處理您的第一個動作,並stopActtivityIndicator()

let activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.gray)

我增加中的新方法startAnimating()stopAnimating()電話你顯示Facebook的份額。對我來說,因爲我想結束的指示和顯示鳴叫盒(響應異步HTTP請求使用SLComposeViewController,我只好打電話回主線程停止方法是這樣的:

DispatchQueue.main.async(execute: {() -> Void in 

    self.stopActtivityIndicator() 

}) 
+0

我我沒有收到任何事件,當從UIActivityViewController點擊Facebook按鈕時,我沒有收到任何事件;這就是問題 –

+0

啊,它確實是關於Facebook共享的延遲雖然他們沒有直接解決這個問題,但是http://stackoverflow.com/questions/13519904/how-to-make-the-presentviewcontroller-with-slcomposeviewcontroller-faster中的一些答案可能會有所幫助。 。介紹如何預加載'SLComposeViewController'以使其更快,另一個建議加載它異步,防止應用程序放緩 –