2014-03-03 43 views
0

當使用SLComposeViewController發佈到Facebook時,即使設備沒有網絡連接,也會返回SLComposeViewControllerResultDone。任何解決方法,所以我只在成功發佈後才顯示'成功'信息。SLComposeViewControllerResultDone在沒有連接時返回

[_shareComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) 
    { 

     switch (result) 
     { 
      case SLComposeViewControllerResultCancelled: 

       break; 
      case SLComposeViewControllerResultDone: 
      { 
       // Show success message 

      } 
       break; 
      default: 
       break; 
     } 
    }]; 

回答

3

進口蘋果的可達性文件,並用以下方法檢查:

- (BOOL)connected 
{ 
    Reachability *reachability = [Reachability reachabilityForInternetConnection]; 
    NetworkStatus networkStatus = [reachability currentReachabilityStatus]; 
    return networkStatus != NotReachable; 
} 



[_shareComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) 
    { 

     switch (result) 
     { 
      case SLComposeViewControllerResultCancelled: 

       break; 
      case SLComposeViewControllerResultDone: 
      { 

        if (![self connected]) { 
         // Show internet is not available message 
        } 
        else { 
         // Show success message 
        } 

      } 
       break; 
      default: 
       break; 
     } 
    }]; 
0

From apple's doc

處理程序,當用戶寫完後調用。

討論

該處理器具有指示一個參數是否用戶 成品或取消撰寫的文章。該塊不保證 在任何特定線程上被調用。

從上面可以清楚,完成處理程序將在您完成構圖後調用,但它不會響應網絡連接可用性或發佈失敗。你必須在構圖之前檢查連接。

你也可以用這個處理程序來處理這兩個結果。

typedef NS_ENUM(NSInteger, 
    SLComposeViewControllerResult) { 
    SLComposeViewControllerResultCancelled, 
    SLComposeViewControllerResultDone 
}; 

也就是說,您的作曲家視圖控制器是post或cancel。