2012-01-29 78 views
5

我有一个简单的布局移动AIR应用程序:的Flex防止软键盘从收盘

<s:layout><s:VerticalLayout /></s:layout> 

<s:TextArea width="100%" height="100%" /> 

<HGroup width="100%" > 
    <s:Button label="button" /> 
    <s:Button label="button" /> 
    <s:Button label="button" /> 
</HGroup> 

应用程序时设置软键盘在主应用程序设置resizeForSoftKeyboard =“真”开来调整。 textArea使用默认的Flex 4.6皮肤。
我的问题是,如果用户通过在我的texArea中输入文本来打开键盘,他将无法点击TextArea下方的按钮,因为只要他尝试点击按钮,软键盘就会降低(因为焦点它离开TextArea?),并立即再次打开(因为mouseDown位置现在位于TextArea之上?)。

如何防止软键盘关闭,以便用户能够单击TextArea和键盘之间的按钮?

感谢

回答

0

也许添加事件,弹出键盘点击即在按钮的单击事件处理程序的按钮时。

同时,(我havnt这个尝试我自己),但在键盘该视图的停用事件中,添加event.preventDefault()

布赖恩

+0

我试过两种。问题是,按钮没有被点击。我认为这是事件的顺序:1. textArea失去焦点2.键盘变成down,keyboardDeactivate事件被调度。 3. mouseDown在(扩展的)textArea上注册,所以键盘返回。 – sydd 2012-02-03 23:42:33

1

这是很奇怪的。我试图运行您的程序我自己,我也不麻烦:

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
      xmlns:s="library://ns.adobe.com/flex/spark" applicationDPI="320" resizeForSoftKeyboard="true"> 
    <s:layout><s:VerticalLayout /></s:layout> 

    <s:TextArea width="100%" height="100%" /> 

    <s:HGroup width="100%" > 
     <s:Button label="button" click="trace('clicked')"/> 
     <s:Button label="button" click="trace('clicked')" /> 
     <s:Button label="button" click="trace('clicked')" /> 
    </s:HGroup> 
</s:Application> 

键盘打开,当我触摸文本区域,关闭,当我点击一个按钮(不再次打开),并点击在显示调试时的控制台。

你没有发布整个应用程序,你有没有在我完整的程序中没有?在这种情况下,我会看看是否有任何可能干扰用户界面。