2008年12月9日火曜日

Flex3.2+MacOSXでTextAreaにコピペで文字を貼付けると改行が入らない

Flex3.2(AIR1.5) + MacOSXでTextAreaにクリップボード経由でコピペで文字を貼付けると改行が入らないみたいで、悩んでます。

Flex3.2を使いMacOSXにてテキストエディタで改行を含んだ文字をコピー。
mx:TextArea上でペーストすると、見た目上は改行が入って貼付けされる。
でも、TextArea#textの文字列を見てみると、改行文字自体が入っていない。

現象としては、Flex3.2から発生していて、Windowsでは発生しないみたい。

・TextAreaの見た目上は改行されているが、TextArea#textの文字列には改行がない。
・Flex3.1(AIR1.0)であれば問題なし(=TextArea#textの文字列には改行が入っている)
・WindowsXPでは、問題なし
・コピペでなく、TextArea上でEnterキーで改行入れると問題なし
・テキストエディタからドラッグ&ドロップでコピーすると問題なし

改行文字が入っていない...というのは以下で試しました。

TextAreaにて "a" + 改行 + "b" をクリップボード経由で貼付けして、
var value:String = textArea.text;
for (var i:int = 0; i < value.length; i++) {
   trace(i + ":" + value.charCodeAt(i));
}
って感じで文字コードをみると、結果は
0:97
1:98
ってなります。

問題ないパターンの時には
0:97
1:13
2:98
と、13(CR)が含まれているんですけども。。

テキストエディタをCotEditorを使って、改行コードを CR, LF, CR+LF で試してみても現象は同じ。

TextAreaの見た目上では改行が入っているので、DELETEキーで改行部分を削除してみると、見た目上は改行が消える動きをする。
んー、ということは、TextArea#textのメソッドで何かやってるんやろうか。

これが解決できないと、文字列を改行で区切って文字列操作することが出来ないっ 困った。
...ということで、まだハマり中。何かご存知の方いらしたら教えてください。。
• • •