Отложите контроль представления GameCenter Authentication из презентации - Swift 4.2 - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь заставить GameCenter Authentication View Controller быть задержанным за 2 секунды до его представления.В моем VC происходит около 2 секунд анимации кнопок, и я не хочу, чтобы они блокировались представлением GameCenter Authentication View Controller .Есть предложения?

override func viewDidLoad() {
    super.viewDidLoad()

     // Game Center - Authentication of player
     NotificationCenter.default.addObserver(self, selector: #selector(showAuthenticationViewController), name: NSNotification.Name(GameKitHelper.PresentAuthenticationViewController), object: nil)

     GameKitHelper.sharedInstance.authenticateLocalPlayer()
}

// Game Center - Presents authentication view controller
@objc func showAuthenticationViewController() {
    let gameKitHelper = GameKitHelper.sharedInstance
    if let authenticationViewController =
        gameKitHelper.authenticationViewController {
        self.present(authenticationViewController, animated: true, completion: nil)
    }

}

// add this to deregister for notifications when the object is deallocated
deinit {
    NotificationCenter.default.removeObserver(self)
}

1 Ответ

0 голосов
/ 27 февраля 2019

Возможно, старый добрый Grand Central Dispatch (GCD) выполнит свою работу.2.0 на 2 секунды, но измените его на столько времени, сколько вам нужно.

override func viewDidLoad() {
    super.viewDidLoad()

    DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {

         // Game Center - Authentication of player
        NotificationCenter.default.addObserver(self, selector: #selector(self.showAuthenticationViewController), name: NSNotification.Name(GameKitHelper.PresentAuthenticationViewController), object: nil)

        GameKitHelper.sharedInstance.authenticateLocalPlayer()
    }
}
...