プロプログラマ

プログラマーを職業としてます。 Flex,Air,C#,Oracle,HTML+JSの言語ノウハウを中心に情報発信していきます

[Flex] TextInputにmaxCharsを指定した場合の不具合回避 (Flex4.5.1以下限定)

Flex SDK 4.5.1までのバージョンにおいて、
sparkTextInputmaxCharsを指定した状態で日本語入力を行うと、
入力した値がきちんと確定されない不具合が発生します。

TextInput以外にも、TextAreaComboBoxも同じだと思います。(ComboBoxは未検証)

以前からのバグのようで、FlexのBugとして、登録いただいています。

【Flex Hero beta,Spark TextInput,Chinese localization issue(when using the property of maxChars,the value of text will incorrect).】
http://bugs.adobe.com/jira/browse/SDK-28999

このバグ報告の中でも語られているように、以下のようなコードを書けば、
自分の環境では不具合が発生していません。(今のところ)

import mx.core.mx_internal;
import spark.components.RichEditableText;
import spark.components.TextInput;

public class TextInputEx extends TextInput
{
    public function TextInputEx()
    {
        super();
    }

    override protected function partAdded(partName : String, instance : Object) : void {
        super.partAdded(partName, instance);

        if ((partName == "textDisplay") && (instance is RichEditableText)) {
            (instance as RichEditableText).mx_internal::batchTextInput = false;
        }
    }
}


ただし、自分自身このコードを書くことによって何が行われているのか、全然理解できていません。
真似する方は十分ご注意ください。

まだまだ、スキル不足です。

なお、この不具合はFlexSDK4.6では改善されているようです。
4.6が使える方は問題ありません。

 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

, ,

One thought on “[Flex] TextInputにmaxCharsを指定した場合の不具合回避 (Flex4.5.1以下限定)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください