秘密結社ぎゅう☆ぎゅう倶楽部でタグ「フリーズ」が付けられているもの
Flex3でフォームアプリケーションを開発していた時に、ある画面でTABキーを押すと、アプリケーション全体がフリーズしてしまうという、不可解な現象に遭遇しました。
フリーズ中にデバッガで一時停止してみたところ、FocusManagerが、次にフォーカスを設定するコンポーネントを探すために、ひたすらループしているのが原因のようでした。
そのアプリケーションは、ひとつのMXML上にViewStackで結構な数の画面を配置してあり、コンポーネントもかなりの数に達していて、それらのコンポーネントの可視状態や有効状態などを、ひとつひとつチェックしているらしいのです。
とそこまではわかったのですが、なぜそんな挙動をしているのかがさっぱりわからず、しかも他の画面では同じ現象も発生しないので、ものすごーく悩んでいたのですが、ほんのちょっとした修正で、無事に解決に至りました。
その修正内容とは「tabIndexを指定する」ということです。
なんでこれで解決したのかはわかりませんが、Flex SDK 3.2には、FocusManager絡みのバグがあるようなので、もしかするとそれが原因なのかもしれません。
とにかくこれからは、tabIndexは必ず指定しようと、固く心に誓ったのでした。


