自动显示输​​入面板,并将输入重点放在tizen上

时间:2018-05-21 09:23:46

标签: c tizen tizen-native-app

我想要实现的是,当显示弹出窗口时,输入面板(键盘)也会出现,当用户开始输入时,也会更新面板内容上的条目内容。

不幸的是,这在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);

代码的第一个版本(上面的代码)试图在弹出窗口仍在创建时显示面板。因此,显示调用可能会影响该条目的焦点状态。

以下是我按顺序尝试的更改:

  1. 我尝试使用以下方式明确允许关注条目:
  2. elm_object_focus_allow_set(entry, EINA_TRUE);

    没有运气。我还尝试在焦点允许设置为true之后明确地将注意力集中在条目上,再次没有成功。

    1. 我尝试在条目聚焦后显示面板(然后调用弹出窗口的show函数。再次无效。

    2. 添加了:

      elm_entry_input_panel_enabled_set(entry, EINA_TRUE);

    3. 该功能的文档说: 如果为true,则在单击条目或具有焦点时会出现输入面板。 不工作

      1. 尝试使用从条目中获得的上下文显示代码,其中包含以下代码:

        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);
        }
        
      2. 我试图在Tizen foru上发布问题,但我仍然没有得到解决问题的答案,这就是链接:https://developer.tizen.org/forums/native-application-development/entry-on-popup-focus#comment-27748

        我做错了什么?我尝试了一切,但此刻没有运气。不幸的是,文档没有涵盖这个用例(我认为这很常见)。

        任何帮助?

0 个答案:

没有答案