Adobe air mobile - softKeyboardType не работает при использовании skinClass для прокрутки? - PullRequest
2 голосов
/ 27 марта 2012

Я пытаюсь установить softKeyboardType для электронной почты, но когда я использую skinClass = "spark.skins.mobile.TextAreaSkin", он не меняется, но когда я снимаю skinClass = "spark.skins.mobile.TextAreaSkin" это работает. Проблема в том, что мне нужен класс skinClass = "spark.skins.mobile.TextAreaSkin", чтобы разрешить моему приложению, так что прокрутка без него текста не останется в границах полей ввода текста. Кто-нибудь видел эту проблему или кто-то другой исправляет проблему с прокруткой?
Примеры кода

<s:TextInput softKeyboardType="email" id="id1" width="100%" skinClass="spark.skins.mobile.TextInputSkin" /> 
<s:TextArea softKeyboardType="email" id="id2" height="400" width="100%" skinClass="spark.skins.mobile.TextAreaSkin" />

Спасибо за помощь,
Джастин

Ответы [ 3 ]

2 голосов
/ 13 апреля 2012

Я проверил mobiletheme default.css во Flex 4.6 SDK Adobe использует различные скины для компонентов TextInput и TextArea

TextArea
{
    ...
    skinClass: ClassReference("spark.skins.mobile.StageTextAreaSkin");
}

TextInput
{
    ...
    skinClass: ClassReference("spark.skins.mobile.StageTextInputSkin");
}

, поэтому я думаю, что вы должны использовать StageTextAreaSkin или StageTextInputSkin в качестве skinClass для соответствующих компонентов

softKeyboardType будет работать в этом случае, но проблема с позицией текста останется, я думаю, вам потребуется изменить / исправить источники StageTextAreaSkin или StageTextInputSkin для прокрутки

1 голос
/ 19 марта 2014

Столкнувшись с этой проблемой, я нашел обходной путь, который сработал в моем случае.

Используйте скин по умолчанию, установите ваш softKeyboardType.

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

Затем, когда ваше поле получает фокус, в обработчике focusIn вы сворачиваете или переключаете этот раздел. Это делает две хорошие вещи: во-первых, он поднимает ваше поле над клавиатурой, а во-вторых, он убирает фокус с вашего поля (по крайней мере, в моем случае это было сделано, не уверен, что на 100%, если нет, затем переключите фокус вручную) , Это хорошо, потому что, когда вы снова установите фокус на поле (yourfield.setFocus ()), курсор появится там, где вы хотите, в пределах вашего поля.

Когда вы закончите печатать, вы вернете верхнюю часть в исходное состояние из обработчиков focusOut или softKeyboardDeactivate.

Надеюсь, это поможет ...

0 голосов
/ 13 апреля 2012

похоже, что это flex 4.6 bug

http://forums.adobe.com/message/4122095

...