【iOS】続・アプリがバックグラウンド・フォアグラウンド状態になった時の実行処理
前回からの続きです。アプリがバックグラウンド・フォアグラウンド状態になった時の実行処理の方法をAppDelegateからの通知を経て、NSNotificationCenterを生成してメソッドを実行という流れからUIApplicationのNotificationsのパラメータを使って実行処理を行います。
また、今回は実用例を交えながら進めていきたいと思います。
UIApplicationのNotificationsのパラメータ
アプリケーションがアクティブになった時に通知
UIApplicationDidBecomeActiveNotification
アプリケーションがバックグラウンドに入る時に通知
UIApplicationDidEnterBackgroundNotification
アプリケーションが起動した直後に通知
UIApplicationDidFinishLaunchingNotification
アプリケーションがアクティブになる直前に通知
UIApplicationWillEnterForegroundNotification
アプリケーションがアクティブで無くなる直前に通知
UIApplicationWillResignActiveNotification
アプリケーションが終了される直前に通知
UIApplicationWillTerminateNotification
ステータスバーのサイズ変更される直前に通知
UIApplicationWillChangeStatusBarOrientationNotification
デバイスの向きが変わった後に通知
UIApplicationDidChangeStatusBarOrientationNotification
NSNotificationCenterを生成
UIApplicationのNotificationsのパラメータ「UIApplicationDidEnterBackgroundNotification」を使います。
- (void)viewDidLoad { // name:UIApplicationDidEnterBackgroundNotification(アプリがバックグラウンドになる時)を指定 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sampleNotification) name:UIApplicationDidEnterBackgroundNotification object:nil]; }
メソッド実行
- (void) sampleNotification{ // バックグラウンド時になった時の実行処理 }
実用例
今回は実用例として、キーボードを表示中からバックグラウンド状態になった時にキーボードを閉じる処理を行いたいと思います。
通常、キーボード表示中にバックグラウンド状態後、フォアグラウンド状態になった画面にはキーボードが表示されたままです。
そこで、バックグラウンド状態後にキーボードを閉じる処理を実行させることで解決していきます。
NSNotificationCenterを生成
バックグラウンド状態に入る時に通知される「UIApplicationDidEnterBackgroundNotification」を使います。
メソッド名は「keyboardHidden」とします。
- (void)viewDidLoad { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardHidden) name:UIApplicationDidEnterBackgroundNotification object:nil]; }
メソッド実行処理
メソッド内にキーボードを閉じる処理を追加します。
- (void) keyboardHidden{ // resignFirstResponderにてテキストビューで表示されたキーボードを閉じる [self.textView resignFirstResponder]; }
これでキーボード表示中にバックグラウンド状態後にキーボードが閉じ、フォアグラウンド状態になった時はキーボードが消えている状態になります。
コメントをどうぞ