iOS8からdeprecatedになった
1年前のiOS8からUIAlertView
がdeprecatedになりました。
そんなことiOS開発者はとっくにご存知ですよね。
ただ、iOS8でも既存通り大体動いていましたよね。
だから僕はUIAlertController
に置き換えることなくとりあえず使い続けていたのです。
僕と同じようにそのまま使い続けているアプリは多いんじゃないでしょうか。
そしたらなんと、ついに置き換えなきゃいけないかなっていう現象に陥りました。
キーボードとUIAlertViewが出た状態でpushするとキーボードが再表示する
こんな場面ないですか?
- ユーザーに
UITextField
かなんかで文字入力してもらって、次の画面に遷移しようとする。 - その時にアラートで「この内容で送信しますか?」と、OK/Cancelボタンを出します。
- OKを押したら、pushした画面で「送信が完了しました」と出す。
このアラートをUIAlertView
で実装していると、画面の遷移中はキーボードが閉じるのですが、次の画面で一瞬キーボードが再表示して、また閉じるのです。
原因を探る
いろいろな原因が考えられたので、いろいろと探りました。
UIResponder#resignFirstResponder
とか色々。。。
ただし解消されず。
そういえばUIAlertView
がdeprecatedになったっけな。
って思い出したのは、疲れ果ててベッドで寝ようとした時のことです。
試しにUIAlertControllerで実装
ここまでの流れでとっくにわかっているかと思いますが、
UIAlertController
で実装をしたら上記の問題は全く起きなくなりました。
そもそもiOS7では正しく動いていたので早く気付けよって話です。
(※iOS7では使えないので、切り分けをしないといけないです。)
いよいよUIAlertControllerに置き換える時が来た
もう1年も経つんですね。
Appleさんがdeprecatedだよって言うやつは、素直に新しいコードにするのが良いです。
時間はかかりますが、原因を探るのにも時間がかかるので。
iOS9の対応をするとさらにUI系で問題が起きそうです。
早いうちにやっておくのが吉。
おわり
指摘や質問があれば、どしどし送ってくださいね〜。