リンクをクリップボードにコピー
コピー完了
SparkのtextAreaにて、いったん全角を入力してから、マウスでその文字を範囲選択した後、
再度全角を入力すると以下の現象が発生することがあります。
※別のtextAreaなどにカーソルを移した状態で、マウスで範囲選択すると、私の環境では100%発生します。
※mxのtextAreaでは発生しません。
①IMEで入力した確定前の文字が表示されなくなる。
※Enterキーを押して確定すると表示される。
②TextOperationEvent.CHANGING イベントや、TextOperationEvent.CHANGE イベントが発生しなくなる。
③Bindableしている箇所も更新されなくなる。
この件に関して、何か情報をお持ちの方はいらっしゃいましたら、教えていただけると幸いです。
<検証パターン>
Windows10 + IE11 + FlexSDK 4.15.0 + FlashPlayer21.0.0.xxx ⇒問題発生する
Windows10 + IE11 + FlexSDK 4.15.0 + FlashPlayer22.0.0.209 ⇒問題発生する
Windows10 + IE11 + FlexSDK 4.15.0 + FlashPlayer23.0.0.162 ⇒問題発生する
Windows7 + IE9 + FlexSDK 4.5.1 + FlashPlayer18 ⇒問題発生しない
Windows7 + IE11 + FlexSDK 4.15.0 + FlashPlayer21.0.0.213 ⇒問題発生しない
Windows7 + IE11 + FlexSDK 4.15.0 + FlashPlayer23.0.0.162 ⇒問題発生しない
<テストコード>
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:fx="http://ns.adobe.com/mxml/2009"
minWidth="300"
minHeight="400">
<fx:Script>
<![CDATA[
import mx.controls.Alert;
[Bindable] private var testStringPrivate:String = "test data";
[Bindable] private var testStringPrivate2:String = "test2 data";
private function doChanging():void {
Alert.show("doChanging 現象発生後は呼び出されなくなる");
}
private function doChange():void {
Alert.show("doChange 現象発生後は呼び出されなくなる");
}
private function doTextInput():void {
// Alert.show("doTextInput 現象発生後も呼び出される");
// ※例えば、ここで testString.text を無理やり更新すると、
// 現象発生後も、doChange が呼び出されるようになる。
}
private function doChanging2():void {
Alert.show("doChanging2 現象発生後は呼び出されなくなる");
}
private function doChange2():void {
Alert.show("doChange2 現象発生後は呼び出されなくなる");
}
private function doTextInput2():void {
// Alert.show("doTextInput2 現象発生後も呼び出される");
// ※例えば、ここで testString2.text を無理やり更新すると、
// 現象発生後も、doChange2 が呼び出されるようになる。
}
]]>
</fx:Script>
<s:VGroup>
<s:Label text="範囲選択選択後、入力すると現象が発生する。発生しない場合は、別のtextAreaにカーソルを移動した上で行うと100%発生する。">
</s:Label>
<s:Label text="※現象発生後は、changeイベント、changingイベントが呼び出されなくなり、Bindableしている箇所も更新されなくなる。">
</s:Label>
<mx:HBox>
<mx:VBox>
<s:Label text="[TextArea1]">
</s:Label>
<mx:Text x="10" y="10" text="{testString.text}" width="286" height="53" id="text"/>
<s:TextArea id="testString" text="{testStringPrivate}" changing="doChanging()" change="doChange()" textInput="doTextInput()" >
</s:TextArea>
<s:Label text="[TextArea2]">
</s:Label>
<mx:Text x="10" y="10" text="{testString2.text}" width="286" height="53" id="text2"/>
<s:TextArea id="testString2" text="{testStringPrivate2}" changing="doChanging2()" change="doChange2()" textInput="doTextInput2()">
</s:TextArea>
</mx:VBox>
</mx:HBox>
</s:VGroup>
</s:Application>