Я пытаюсь добиться того, чтобы при отображении всплывающего окна также отображалась панель ввода (клавиатура), и когда пользователь начинает вводить текст, он также обновляет содержимое записи, содержащееся в содержимом панели.
К сожалению, это кажется довольно сложным в Tizen.
То, что я до сих пор получил, это то, что отображается всплывающее окно, также и kepad, но когда я нажимаю кнопки на клавиатуре, они не обновляют запись.
Для того, чтобы начать печатать дажеесли отображается клавиатура, я должен нажать на запись.
Я сделал много разных попыток, но безуспешно.Ниже приведена первая версия кода, и я пытаюсь перечислить все протестированные мной изменения:
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);
Первая версия кода (та, что выше) пыталась отобразить панель, пока всплывающее окно быловсе еще создаю.Поэтому, возможно, вызов show мог повлиять на состояние фокуса записи.
Ниже перечислены изменения, которые я попытался выполнить по порядку:
- Я попытался явно разрешить фокусировку наввод с помощью:
elm_object_focus_allow_set(entry, EINA_TRUE);
без удачи.Я также попытался явно указать фокус записи сразу после того, как для разрешения фокусировки было установлено значение true, опять же безуспешно.
Я пытался показать панель после фокусировки ввода (затем после вызова функции показа для всплывающего окна. Снова не работает.
Добавлено:
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,но я все еще не получил ответ, который решил бы мою проблему, это ссылка: https://developer.tizen.org/forums/native-application-development/entry-on-popup-focus#comment-27748
Что я делаю не так?Я перепробовал все, но на данный момент не повезло.И, к сожалению, документация не охватывает этот вариант использования (что я считаю довольно распространенным).
Любая помощь?