2012-01-29 75 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> 

鍵盤打開,當我觸摸文本區域,關閉,當我點擊一個按鈕(不再次打開),並點擊在顯示調試時的控制檯。

你沒有發佈整個應用程序,你有沒有在我完整的程序中沒有?在這種情況下,我會看看是否有任何可能干擾用戶界面。