Flex 4.6 скрыть / отменить Softkeyboard - PullRequest
6 голосов
/ 15 декабря 2011

У меня есть некоторые проблемы с поведением софт-клавиатуры в flex 4.6 и air 3.1

У меня есть список с панелью поиска сверху. Когда пользователь выбирает компонент TextInput, всплывающая программная клавиатура появляется так, как должна. Теперь, когда пользователь заканчивает вводить свой текст и нажимает клавишу возврата (или кнопку done / search / ...), я хочу, чтобы программная клавиша исчезла.

Что я пробовал до сих пор:

  • Я установил для свойства returnKeyLabel значение «done», и кнопка показывает соответственно. Однако он только отклоняет клавиатуру на Android, на IOS клавиатура просто остается.

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

  • Я также попытался отправить собственные «поддельные» события нажатия, когда нажата клавиша «Return», но это также не сработало.

В ходе поиска этой проблемы я обнаружил эту Dismiss SoftKeyboard во Flex Mobile , но она тоже не сработала. Или, по крайней мере, не в Flex 4.6

Теперь кто-нибудь знает хороший способ скрыть программную клавиатуру или заставить returnKeyLabel "выполнено" работать на IOS, которая будет работать с flex 4.6 / air 3.1?

Ответы [ 3 ]

9 голосов
/ 20 декабря 2011

Вы пробовали что-то подобное?

<s:TextInput prompt="First Name" returnKeyLabel="done" enter="handlerFunction()"/>  
private function handlerFunction():void{
    stage.focus = null
} 
3 голосов
/ 16 августа 2012

Для гибких мобильных приложений для Android я имитировал интуитивно понятный способ нажатия ios на фон, чтобы удалить программную клавиатуру следующим образом:

import spark.components.supportClasses.*
        protected function application1_clickHandler(event:MouseEvent):void
        {

            if(event.target is StyleableTextField || event.target is StyleableStageText){
                // ignore because came from a textInput
            }else{
                stage.focus = null
                // to remove the softkeyboard
            }
        }
0 голосов
/ 29 марта 2018
<s:TextInput prompt="First Name" returnKeyLabel="done" enter="{stage.focus = null}"/>

Это то же самое, что и ответ Фрэнсиса, но это избавляет от необходимости создавать новую функцию

...