我想要实现的是,当显示弹出窗口时,输入面板(键盘)也会出现,当用户开始输入时,也会更新面板内容上的条目内容。
不幸的是,这在Tizen中看起来相当复杂。
到目前为止我所获得的是弹出窗口,也是键盘,但是当我按下键盘上的按钮时,他们没有更新条目。
即使显示小键盘也要开始实际输入,我必须点击该条目。
我做了很多不同的尝试,没有成功。以下是代码的第一个版本,我尝试列出我测试的所有更改:
Evas_Object *popup, *layout;
popup = elm_popup_add(parent);
elm_popup_align_set(popup, ELM_NOTIFY_ALIGN_FILL, 1.0);
evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_object_part_text_set(popup, "title,text", "Use energy");
layout = elm_layout_add(popup);
elm_layout_theme_set(layout, "layout", "drawer", "panel");
evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_object_content_set(popup, layout);
Evas_Object *entry = elm_entry_add(layout);
set_number_on_entry(entry, 0);
elm_entry_input_panel_layout_set(entry, ELM_INPUT_PANEL_LAYOUT_NUMBERONLY);
elm_entry_input_panel_show(entry);
elm_object_part_content_set(layout, "elm.swallow.content" , entry);
dlog_print(DLOG_INFO, APP_TAG, elm_entry_entry_get(entry));
container->entry = entry;
Evas_Object *button1;
button1 = elm_button_add(popup);
elm_object_text_set(button1, "OK");
elm_object_part_content_set(popup, "button1", button1);
elm_object_style_set(button1, "popup");
evas_object_smart_callback_add(button1, "clicked", ok_pressed_energy, container);
/* Add a "Cancel" button to popup */
button1 = elm_button_add(popup);
elm_object_text_set(button1, "Cancel");
elm_object_part_content_set(popup, "button2", button1);
evas_object_smart_callback_add(button1, "clicked", dismissed_cb, popup);
evas_object_smart_callback_add(popup, "dismissed", dismissed_cb, NULL);
container->popup = popup;
evas_object_show(popup);
elm_object_focus_set(entry, EINA_TRUE);
elm_entry_cursor_end_set(entry);
代码的第一个版本(上面的代码)试图在弹出窗口仍在创建时显示面板。因此,显示调用可能会影响该条目的焦点状态。
以下是我按顺序尝试的更改:
elm_object_focus_allow_set(entry, EINA_TRUE);
我尝试在条目聚焦后显示面板(然后调用弹出窗口的show函数。再次无效。
添加了:
elm_entry_input_panel_enabled_set(entry, EINA_TRUE);
该功能的文档说: 如果为true,则在单击条目或具有焦点时会出现输入面板。 不工作
尝试使用从条目中获得的上下文显示代码,其中包含以下代码:
Ecore_IMF_Context *imf_context = (Ecore_IMF_Context*)
elm_entry_imf_context_get(entry);
if(imf_context){
dlog_print(DLOG_INFO, APP_TAG , "Imf context");
ecore_imf_context_input_panel_show(imf_context);
}
我试图在Tizen foru上发布问题,但我仍然没有得到解决问题的答案,这就是链接:https://developer.tizen.org/forums/native-application-development/entry-on-popup-focus#comment-27748
我做错了什么?我尝试了一切,但此刻没有运气。不幸的是,文档没有涵盖这个用例(我认为这很常见)。
任何帮助?