LoginSignup
9
10

More than 5 years have passed since last update.

UIAlertViewはもう使わないほうが良いかも

Last updated at Posted at 2015-08-30

iOS8からdeprecatedになった

1年前のiOS8からUIAlertViewがdeprecatedになりました。
そんなことiOS開発者はとっくにご存知ですよね。
ただ、iOS8でも既存通り大体動いていましたよね。

だから僕はUIAlertControllerに置き換えることなくとりあえず使い続けていたのです。
僕と同じようにそのまま使い続けているアプリは多いんじゃないでしょうか。

そしたらなんと、ついに置き換えなきゃいけないかなっていう現象に陥りました。

キーボードとUIAlertViewが出た状態でpushするとキーボードが再表示する

こんな場面ないですか?

  1. ユーザーにUITextFieldかなんかで文字入力してもらって、次の画面に遷移しようとする。
  2. その時にアラートで「この内容で送信しますか?」と、OK/Cancelボタンを出します。
  3. OKを押したら、pushした画面で「送信が完了しました」と出す。

このアラートをUIAlertViewで実装していると、画面の遷移中はキーボードが閉じるのですが、次の画面で一瞬キーボードが再表示して、また閉じるのです。

原因を探る

いろいろな原因が考えられたので、いろいろと探りました。
UIResponder#resignFirstResponderとか色々。。。
ただし解消されず。

そういえばUIAlertViewがdeprecatedになったっけな。
って思い出したのは、疲れ果ててベッドで寝ようとした時のことです。

試しにUIAlertControllerで実装

ここまでの流れでとっくにわかっているかと思いますが、
UIAlertControllerで実装をしたら上記の問題は全く起きなくなりました。
そもそもiOS7では正しく動いていたので早く気付けよって話です。
(※iOS7では使えないので、切り分けをしないといけないです。)

いよいよUIAlertControllerに置き換える時が来た

もう1年も経つんですね。
Appleさんがdeprecatedだよって言うやつは、素直に新しいコードにするのが良いです。
時間はかかりますが、原因を探るのにも時間がかかるので。

iOS9の対応をするとさらにUI系で問題が起きそうです。
早いうちにやっておくのが吉。

おわり

指摘や質問があれば、どしどし送ってくださいね〜。

9
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10