모바일 구성 요소에서 TextArea 및 TextInput을 사용할 때 두 가지 문제가 있습니다. 해결 방법을 모릅니다. 첫 번째는 TextArea 텍스트가 올바르게 배치되지 않고 두 번째는 다른 구성 요소와 겹치는 것입니다.모바일에서 Flex TextArea 및 TextInput이 올바르게 배치되지 않았습니다.
TextArea가 Scroller에 있거나 (또는 소프트 키보드가 TextArea 위치를 활성화하고 이동하는 경우) 문제가 발생합니다.
<s:Scroller width="100%" height="100%" top="100" bottom="100">
<s:VGroup width="50%">
<s:Button label="" height="600" width="440"/>
<s:TextArea id="testing" />
<s:TextArea id="testing2" />
<s:Button label="" height="800" width="440"/>
</s:VGroup>
</s:Scroller>
첫 번째 이미지는 텍스트와 응용 프로그램입니다 : 모바일 응용 프로그램에 아래의 코드를 추가하는 경우
이를 볼 수 있습니다.
는 두 번째 이미지에서 나는 몇 가지를 아래로 스크롤했습니다. 텍스트가 같은 위치에 남아 있다는 것을주의 깊게 살펴 보았습니다 (위에있는 버튼 위에 있습니다)!주의 :
내용은 (는 최종 위치의에 정착 할 때 나는 다음 텍스트가 즉시합니다 (AIR 시뮬레이터에) 올바른 위치에 위치보기를 던져 제대로 다시 배치하는 경우 휴대 기기에서는 텍스트가 마지막 휴식 장소가 될 때까지 텍스트가 사라지는 것처럼 보입니다. 수동으로 누르거나 끌거나 놓을 때 (던지지 않음) 또는 소프트 키보드를 활성화 할 때 일어나지 않는 일이 발생했기 때문에 이것은 좋은 소식입니다.
불행히도 스크롤러 마스크를 무시하고 다른 모든 콘텐츠 위에 텍스트가 나타날 수 있지만 다른 첫 번째 문제가 해결되면 함께 살 수 있습니다.
나는이 내가 분명히 크기를 조정하지 않기 때문에 작동하지 않을 폭 + 1. 폭을 설정하면 텍스트가 올바른 위치에 위치를 얻을 수
UPDATE. 내가 무효화 시도하고 아무것도 작동하지 않습니다. 다음은 softKeyboardActivating 이벤트에서 시도한 코드입니다.
<s:TextArea id="testing" softKeyboardActivate="testing_softKeyboardActivateHandler(event)"/>
<fx:Script>
<![CDATA[
import mx.core.IInvalidating;
protected function testing_softKeyboardActivateHandler(event:SoftKeyboardEvent):void {
trace("Activating");
/*testing.invalidateProperties();
testing.invalidateDisplayList();
testing.invalidateSize();
testing.validateNow();
parentGroup.validateNow();
scroller.validateNow();*/
// testing.invalidateParentSizeAndDisplayList();
//IInvalidating(testing.parent).invalidateSize();
//IInvalidating(testing.parent).invalidateDisplayList();
//testing.width = NaN;
//testing.width = testing.width+1;
}
]]>
</fx:Script>
업데이트 2 : 폭 밖으로의 주석 = 폭 + 1 "작업"을 볼 수
이 코드는 작동하지만 해킹과는 스크롤러가 때를 사용하고있는 코드보다 훨씬 느리다 보기가 발생합니다 :
protected function testing_softKeyboardActivateHandler(event:SoftKeyboardEvent):void {
StageTextAreaSkin2(testing.skin).styleChanged("styleName");
}
UPDATE 3
나는 아래의 답변 섹션에서 해결 방법을 추가했지만이 해킹이다. 또한 올바른 위치에있을 때 올바르게 마스킹됩니다. 그렇게 좋은 것입니다. 그러나, 나는 아직도 이것을 할 올바른 방법을 찾고있다.
이 플렉스 4.6의 AIR 시뮬레이터, 아이폰 5와 안드로이드 넥서스 7