Отображение панели автоматического ввода и фокусировка ввода на тизене - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь добиться того, чтобы при отображении всплывающего окна также отображалась панель ввода (клавиатура), и когда пользователь начинает вводить текст, он также обновляет содержимое записи, содержащееся в содержимом панели.

К сожалению, это кажется довольно сложным в 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 мог повлиять на состояние фокуса записи.

Ниже перечислены изменения, которые я попытался выполнить по порядку:

  1. Я попытался явно разрешить фокусировку наввод с помощью:

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

Что я делаю не так?Я перепробовал все, но на данный момент не повезло.И, к сожалению, документация не охватывает этот вариант использования (что я считаю довольно распространенным).

Любая помощь?

...