3

SwiftとiOS9を学ぶために書いている私のアプリではNStimer、ユーザーがホームボタンをダブルクリックしてアプリスイッチャーになったときに一時停止しようとしています。ユーザーはアプリ スイッチャー インターフェイスで作業できるようになりました。アプリが最前面にある場合、アプリ デリゲートは次のメッセージを受け取ります applicationWillResignActive

しかし、タイマーはホームボタンを1回タップしたときにのみ一時停止し、2回タップしてアプリスイッチャーを使用すると、タイマーがカウントされているのがわかります。何かアイデアはありますか?

4

1 に答える 1

1

AppDelegate.swift に次の行を追加してみてください。

static let kAppDidBecomeActive = "kAppDidBecomeActive"
static let kAppWillResignActive = "kAppWillResignActive"

func applicationDidBecomeActive(application: UIApplication) {
    // Your application is now the active one
    // Take into account that this method will be called when your application is launched and your timer may not initialized yet
    NSNotificationCenter.defaultCenter().postNotificationName("kAppDidBecomeActive", object: nil)
}

func applicationWillResignActive(application: UIApplication) {
    // Home button is pressed twice
    NSNotificationCenter.defaultCenter().postNotificationName("kAppWillResignActive", object: nil)
} 

さらに、View Controller をこれらの通知のオブザーバーとして設定します。

override func viewDidLoad() {
    super.viewDidLoad()

    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(pauseGame), name: AppDelegate.kAppWillResignActive, object: nil)
    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(resumeGame), name: AppDelegate.AppDelegate.kAppDidBecomeActive, object: nil)

}
于 2016-08-31T09:06:33.817 に答える