我在我的swift项目中使用SVProgressHUD作为框架。在iOS 8中运行正常。我已在我的应用中使用Facebook登录。每当我使用登录SVProgressHUD时,该应用程序都不会显示。但是,当我杀死该应用程序并启动SVProgressHUD时,它将正常工作。我已经在info.plist中添加了必需的键。我无法找出问题所在。请任何人给出解决方案。

编辑:如果我将“loginbehaviour”更改为Web和SystemAccount。它工作正常。

环境FBSDK:-4.8.0XCode:-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()
}

最佳答案

如果在主线程上执行繁重的任务,则不会显示svprogresshud。延迟4 ms后显示加载程序将解决问题

DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(400)) {
            SVProgressHUD.show()
        }

10-08 15:35