2012-01-29 12 views
5

Mam mobilnej AIR aplikację za pomocą prostego układu:Flex Prevent miękka klawiatura z zamknięciem

<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> 

Aplikacja jest ustawiony do zmiany rozmiaru, gdy klawiatura otwiera się poprzez ustawienie resizeForSoftKeyboard = „true” w głównej aplikacji. TextArea używa domyślnej skóry Flex 4.6.
Mój problem polega na tym, że jeśli użytkownik otworzy klawiaturę wpisując tekst w moim texArea, nie będzie mógł kliknąć przycisków pod polem TextArea, ponieważ gdy tylko spróbuje kliknąć przycisk, obniży się klawiatura (ponieważ ostrość zostanie przyciśnięta) to z TextArea?) i natychmiast otwiera się ponownie (ponieważ pozycja MouseDown jest teraz powyżej TextArea?).

Jak mogę zapobiec zamykaniu miękkiej klawiatury, aby użytkownik mógł klikać przyciski między modułem TextArea a klawiaturą?

Dzięki

Odpowiedz

0

Może dodać zdarzenie, aby wywołać klawiaturę po kliknięciu przycisku czyli w procedurze obsługi zdarzenia kliknięcia tego przycisku.

także (a ja havnt próbowała to ja), ale w przypadku deactivate na klawiaturze dla tego widoku, dodać event.preventDefault()

Brian

+0

Próbowałem obu. Problem polega na tym, że przycisk nie zostaje kliknięty. Myślę, że jest to kolejność zdarzeń: 1. textArea traci ostrość 2. klawiatura idzie w dół, keyboardDeactivate wydarzenie. 3. MouseDown rejestruje się na (rozwiniętym) polu tekstowym, więc klawiatura powraca. – sydd

1

To jest bardzo dziwne. Próbowałem uruchomić program sam, i nie mam problemów w ogóle:

<?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> 

Klawiatura otwiera kiedy dotykać obszaru tekstu, zamyka się po kliknięciu przycisku (bez otwierania ponownie) i kliknie pokazać się w konsola podczas debugowania.

Nie opublikowałeś całej aplikacji, czy masz coś w pełnym programie, którego nie mam? W takim przypadku sprawdziłbym, czy którykolwiek z nich może przeszkadzać w interfejsie użytkownika.

Powiązane problemy