AIR for iOS 2.6 で作成したiPhoneアプリで、StageWebView内のテキストフィールドにフォーカスを当てると、その瞬間にカーソルの点滅が止まり、フリーズするという問題の対処法をメモしておきます。
この問題は、一度クリックされるなどしてフォーカスされたDisplayObject(Flash Proではステージに配置したインスタンスも含む)をremoveChildしたり、フレームを移動させてそのインスタンスがステージ上から無くなったりした場合に、stage.focusの値がそのDisplayObjectのままになっていると、その後、StageWebView内のフォームのテキストフィールドがフォーカスされるとフリーズするという現象の可能性があります。
例えば、「[Open] ボタンをクリックすると、そのボタンが消え、StageWebViewによってブラウザが表示される」というコンテンツの場合、表示リストにない [Open] ボタンにフォーカスが残ったまま、StageWebViewが表示される可能性があります。そのとき、StageWebView内にフォームによるテキストフィールドがあった場合に、ユーザがそのテキストフィールドをクリックするとフリーズします。
この対処法は、「StageWebViewでWebページを開く前に、意図的にstage.focusの値をnullにする」といった感じでfocusの値を整理しておくといいと思います。
サンプルスクリプトは、こんな感じです。
var swv:StageWebView = new StageWebView() this.stage.focus = null swv.stage = this.stage swv.viewPort = new Rectangle(0,0,stage.stageWidth, stage.stageHeight) swv.loadURL("http://mushikago.com")
2行目の「this.stage.focus = null」を1行加えるだけで、この問題を回避できます。
東京造形大学卒業後、マクロメディア(現アドビ システムズ)に入社。Quality AssuranceやテクニカルサポートマネージャーとしてFlash、DreamweaverなどのWeb製品を担当。独立後、2007年に虫カゴデザインスタジオ株式会社を設立。2021年東京三鷹を拠点に。最近は、CakePHP、Laravel、Unity、ZBrush、Modo、Adobe Substance 3D Collection、Xcode、Firebaseにフォーカスしています。モバイルアプリ開発情報を主としたブログ「MUSHIKAGO APPS MEMO」の中の人。