iOS 11.1でUIAlertViewの選択肢がタップできなくなる絶望から復帰した物語 by uhooi

iOSDC Japan 2019
iOSDCルーキーズLT(5分)

iOS 11.1でUIAlertViewの選択肢がタップできなくなる絶望から復帰した物語

the_uhooi uhooi the_uhooi
2

約2年ほど前、iOS 11.1のβ版でアプリをテストしていたときのことでした。

「あれ?アラートの選択肢がタップできない」

発生しないこともあるので、最初は気のせいかと思いました。

しかし、気のせいではありませんでした。

調査した結果、「iOS 11.1以降で、UIAlertViewの選択肢がタップされるのをウェイトしている場合、アラート表示のトリガーとなるボタンなどを『素早く』タップすると、選択肢がタップできなくなる」ことがわかりました。

原因がよくわからず、アプリの広範囲に及ぶクリティカルな不具合。

iOS 11.1のリリースが迫る中、私たちがとった行動とは…?

※本セッションではObjective-Cのコードのみ扱います。ただし、Swiftのみ扱っている方でも理解しやすい内容となっています。

【アジェンダ】
・不具合の概要と発見した経緯
・不具合の調査結果
・対応策の検討と、実際に対応した方法

【想定する聞き手】
・クリティカルな不具合の発生時、どのような行動をとればいいか悩んでいる人
・レイヤーを気にせず、どんなクラスからでもUIAlertViewを表示している人
・UIAlertViewを使い続けている人(UIAlertControllerでもこの不具合は発生します)

【ゴール】
・クリティカルな不具合の発生時、どのような観点で行動すればいいかわかる
・iOSのβ版でテストするのも大切だということを理解する
・MVCなどのアーキテクチャに沿って実装することの重要性を認識する

クリティカルな不具合の発生時、アプリの規模やユーザー数、緊急度によって対応方法は変わってくると思います。
本セッションで紹介する対応方法はあくまで一例ですが、少しでもみなさんのお役に立てば幸いです。