|
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); //自定义函数,回调等
}
/////////////////////////////////////////////////////////
|
|