1

私はSVProgressHUD迅速なプロジェクトでフレームワークとして使用しています。iOS 8 で正常に動作しています。アプリで Facebook にログインしています。ログインを使用するたびSVProgressHUDに、アプリ全体に表示されません。しかし、アプリを強制終了すると、起動SVProgressHUDは正常に機能します。info.plist に必要なキーを既に追加しました。私は問題を理解することができません。どなたか解決策をお願いします。

編集:「loginbehaviour」をWebおよびSystemAccountに変更した場合。それは正常に動作しています。

環境 FBSDK:- 4.8.0 XCode:- 6.4、Swift 1.2

LoginViewController.swift

  func loginButton(loginButton: FBSDKLoginButton!,
    didCompleteWithResult
    result: FBSDKLoginManagerLoginResult!,
    error: NSError!) {

        SVProgressHUD.showWithStatus(NSLocalizedString("LOGIN_PROGRESS_MSG", comment: ""))

        if (error != nil) {
            DDLogError("FB Login error: \(error.localizedDescription)")
            SVProgressHUD.showErrorWithStatus(NSLocalizedString(error.localizedDescription, comment: ""))
        } else if result.isCancelled {
            DDLogError("FB Login cancelled")
            SVProgressHUD.showErrorWithStatus(NSLocalizedString("Login cancelled", comment: ""))
        } else {
            DDLogDebug("FB Login success")
            SVProgressHUD.showWithStatus(NSLocalizedString("FB_USER_FETCH_MSG", comment: ""))
            returnUserData()
        }
}

Appdelegate.swift

 let fbLaunch = FBSDKApplicationDelegate.sharedInstance().application(application,
            didFinishLaunchingWithOptions: launchOptions) // Added this method in didFinishLaunchingWithOptions method

も実施

 func application(application: UIApplication,
    openURL url: NSURL,
    sourceApplication: String?,
    annotation: AnyObject?) -> Bool {
        return FBSDKApplicationDelegate.sharedInstance().application(
            application,
            openURL: url,
            sourceApplication: sourceApplication,
            annotation: annotation)
}

func applicationDidBecomeActive(application: UIApplication) {
    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
    LocationManager.sharedInstance.startLocationManger()
    FBSDKAppEvents.activateApp()
    //Send device token change
    APNSManager.validateAndUpdateAPNSToken()

    //Look for APNS payload in background if we have saved any
    APNSManager.handlePendningAPNSPayloads()
}
4

2 に答える 2

2

メインスレッドで重いタスクが実行されている場合、svprogresshud は表示されません。4 ミリ秒の遅延後にローダーを表示すると、問題が解決します

DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(400)) {
            SVProgressHUD.show()
        }
于 2017-11-03T10:34:10.197 に答える