2012-01-29 2 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()

Brian

+0

Я пробовал оба. Проблема в том, что кнопка не нажимается. Я думаю, что это порядок событий: 1. textArea теряет фокус 2. клавиатура идет вниз, клавиатура деактивирует событие отправлено. 3. mouseDown регистрируется в (расширенной) textArea, поэтому клавиатура возвращается. – sydd

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> 

клавиатура открывается, когда я касаюсь области текста, закрывается при нажатии кнопки (без открытия еще раз), и щелкает отображаться в консоль при отладке.

Вы не разместили все приложение, есть ли у вас что-нибудь в полной программе, которой я не занимаюсь? В этом случае я увижу, может ли кто-либо из них вмешиваться в пользовательский интерфейс.

Смежные вопросы