1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/zlgopen-awtk

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
how_to_impl_custom_soft_keyboard.md 2.2 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 22:52 91e8897

Как реализовать пользовательскую клавиатуру

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

1. Настройка редактора: input_type = "custom" (это отключит встроенную клавиатуру).

<edit x="c" y="10" w="90%" h="30" focused="true" input_type="custom" text="" />

Если вы хотите, чтобы редактор автоматически получал фокус при инициализации, можно установить focused = true.

2. Поместите кнопки клавиатуры в view (можно использовать любой контейнерный элемент управления) и установите is_keyboard = true для view.

  <view y="60" x="c" w="90%" h="-60" is_keyboard="true" 
    children_layout="default(r=4,c=4,m=5,s=5)" >
    <button name="key" text="0" />
    <button name="key" text="1" />
    ...
    <button name="backspace" text="<=" />
  </view>

3. Обработка событий кнопок

1. Обработка обычных клавиш

static ret_t on_send_key(void* ctx, event_t* e) {
  widget_t* button = WIDGET(e->target);
  char text[2];
  text[0] = (char)button->text.str[0];
  text[1] = '\0';

  input_method_commit_text(input_method(), text);

  return RET_OK;
}

2. Обработка клавиши удаления

static ret_t on_backspace(void* ctx, event_t* e) {
  input_method_dispatch_key(input_method(), TK_KEY_BACKSPACE);

  return RET_OK;
}

Если вы не хотите видеть курсор редактора, вы можете использовать label вместо edit, и напрямую изменять text метки при вводе и удалении.

Ссылки:

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/zlgopen-awtk.git
git@api.gitlife.ru:oschina-mirror/zlgopen-awtk.git
oschina-mirror
zlgopen-awtk
zlgopen-awtk
master