硬汉嵌入式论坛

 找回密码
 立即注册
查看: 453|回复: 1
收起左侧

[LVGL] LVGL 键盘 问题

[复制链接]

7

主题

20

回帖

41

积分

新手上路

积分
41
发表于 2024-11-11 11:09:37 | 显示全部楼层 |阅读模式
guider创建的UI页面,然后将页面包含的所有部件手动添加到组,关联键盘和文本框。

问题:当光标移动到输入框后会弹出键盘,但是光标再无法移动到键盘上选择对应按钮输出字母。

///////////////////////////////////////////////////// 以下是代码 ////////////////////////////////////////////////////
/**
* @brief  键盘事件回调
* @param  *e :事件相关参数的集合,它包含了该事件的所有数据
* @return 无
*/
static void keyboard_event_cb(lv_event_t *e)
{
    lv_event_code_t code = lv_event_get_code(e);                            /* 获取事件类型 */
    lv_obj_t *target = lv_event_get_target(e);                              /* 获取触发源 */

    if(code == LV_EVENT_VALUE_CHANGED)
    {
        uint16_t id = lv_btnmatrix_get_selected_btn(target);                /* 获取键盘按钮索引 */

        const char *txt = lv_btnmatrix_get_btn_text(target, id);            /* 获取按钮文本 */

        if(strcmp(txt, LV_SYMBOL_KEYBOARD) == 0)                            /* 判断是不是键盘图标被按下 */
        {
            if(lv_keyboard_get_mode(target) == LV_KEYBOARD_MODE_NUMBER)     /* 获取当前键盘模式,判断是否为数字模式 */
            {
                lv_keyboard_set_mode(target, LV_KEYBOARD_MODE_TEXT_LOWER);  /* 如果是数字模式,则切换为小写字母模式 */
            }
            else
            {
                lv_keyboard_set_mode(target, LV_KEYBOARD_MODE_NUMBER);      /* 不是数字模式,则切换为数字模式 */
            }
        }
    }
}


/**
* @brief  自定义代码
* @param  ui :lv_ui句柄
* @return 无
*/
void my_code_screen_0(lv_ui *ui)
{
    //开关的回调
    lv_obj_add_event_cb(ui->screen_0_kaiguan_1, switch_event_cb, LV_EVENT_VALUE_CHANGED, NULL);    /* 添加事件 */
    //按钮的回调
    lv_obj_add_event_cb(ui->screen_0_anniu_2, btn_event_cb, LV_EVENT_CLICKED, NULL);            /* 设置按钮事件 */
    //下拉列表回调
    lv_obj_add_event_cb(ui->screen_0_xialakuang_1, dropdown_event_cb, LV_EVENT_VALUE_CHANGED, NULL);    /* 添加下拉列表回调 */
    //进度条回调
//    lv_timer_create(timer_cb, 100, NULL);
    //键盘回调   
    lv_keyboard_set_textarea(ui->g_kb_screen_0, ui->screen_0_shurukuang_1);                        /* 关联键盘和文本框 */
    lv_obj_add_event_cb(ui->g_kb_screen_0, keyboard_event_cb, LV_EVENT_VALUE_CHANGED, NULL);    /* 设置键盘事件回调 */
   
    //keypad  部件添加
    extern lv_indev_t * indev_keypad;
    lv_group_t *group=lv_group_create();
    lv_indev_set_group(indev_keypad, group);    //将组绑定到输入设备
//    lv_group_set_editing(group, false);   //导航模式
    lv_group_add_obj(group ,ui->screen_0);//按键关联绑定对象初始化,放在初始化中。
    lv_group_add_obj(group ,ui->screen_0_p1_biaoqian_1);
    lv_group_add_obj(group ,ui->screen_0_liebiao_1);
    lv_group_add_obj(group ,ui->screen_0_liebiao_1_item0);
    lv_group_add_obj(group ,ui->screen_0_liebiao_1_item1);
    lv_group_add_obj(group ,ui->screen_0_liebiao_1_item2);
    lv_group_add_obj(group ,ui->screen_0_huadongtiao_1);
    lv_group_add_obj(group ,ui->screen_0_jindutiao_1);
    lv_group_add_obj(group ,ui->screen_0_fuxuankuang_2);
    lv_group_add_obj(group ,ui->screen_0_xialakuang_1);
    lv_group_add_obj(group ,ui->screen_0_kaiguan_1);
    lv_group_add_obj(group ,ui->screen_0_anniu_2);
    lv_group_add_obj(group ,ui->screen_0_anniu_2_label);
    lv_group_add_obj(group ,ui->screen_0_anniu_1);
    lv_group_add_obj(group ,ui->screen_0_anniu_1_label);
    lv_group_add_obj(group ,ui->screen_0_shurukuang_1);
    lv_group_add_obj(group ,ui->screen_0_biaoqian_1);
    lv_group_add_obj(group ,ui->g_kb_screen_0);

    //Update current screen layout.
    lv_obj_update_layout(ui->screen_0);
    //Init events for screen.
    events_init_screen_0(ui);
}

/**
* @brief  LVGL UI
* @param  无
* @return 无
*/
void lv_mainstart(void)
{
    setup_ui(&guider_ui);                      //lvgl各种部件初始化
    my_code_screen_0(&guider_ui);    //自定义函数,回调等
}

/////////////////////////////////////////////////////////


回复

使用道具 举报

7

主题

20

回帖

41

积分

新手上路

积分
41
 楼主| 发表于 2024-11-11 14:04:29 | 显示全部楼层
图来了!!!
如图,用keypad功能,将光标移动到输入框,键盘弹出,但是光标无法移动到键盘上选择字母。
keyboard.jpg
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-4-25 21:31 , Processed in 0.252503 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表