Войти
Urho3DФорумURHOSHARP

Переключение между полями ввода (3 стр)

Страницы: 1 2 3
#30
0:05, 20 дек. 2016

j-nox
Извини, я не пользуюсь встроенным UI.

Я как раз в исходники втыкаю. Качай, это самый верный способ разбираться как там что.


#31
9:13, 20 дек. 2016
j-nox
Есть ещё SetScreenKeyboardVisible
разве это не помогает, в том же HandleFocusChanged?
#32
11:21, 20 дек. 2016

Нет, я его запихнул в двух местах по очереди и вместе, и без толку:

  ....
  UI.SubscribeToUIMouseClick(HandleControlClicked);
  UI.SubscribeToFocusChanged(HandleFocusChanged);
  ....
}

void HandleControlClicked(UIMouseClickEventArgs args)
{
  if(args.Element.TypeName == "LineEdit")
  {
    Input.ScreenKeyboardVisible = true;
  }
}


private void HandleFocusChanged(FocusChangedEventArgs obj)
{
  if (obj.ClickedElement.TypeName == "LineEdit")
  {
    Input.ScreenKeyboardVisible = true;
  }
}
Оба обработчика срабатывают, но клавиатура не появляется.
Такое ощущение, что клавиатура не включается, а toggle: Если сделать 3 поля - то на первом появляется, на втором пропадает, на третьем появляется Ж)

#33
11:27, 20 дек. 2016

Вот жеж, блин...а так?

private void HandleFocusChanged(FocusChangedEventArgs obj)
{
  if (obj.ClickedElement.TypeName == "LineEdit")
  {
    Input.ScreenKeyboardVisible = false;
    Input.ScreenKeyboardVisible = true;
  }
}

или еще хлеще)

private void HandleFocusChanged(FocusChangedEventArgs obj)
{
  if (obj.ClickedElement.TypeName == "LineEdit")
  {
    Input.ScreenKeyboardVisible = false; 
    UI.SetUseScreenKeyboard(false)
    UI.SetUseScreenKeyboard(true)
    Input.ScreenKeyboardVisible = true;
  }
}
#34
11:33, 20 дек. 2016

Хм.. возможно есть баг в самой урхе глубже.. Будем копать?

#35
11:36, 20 дек. 2016

Кстати насчет xamarin forms. Можно контролировать с урхой сделать фоном и поверх него разместить нативные поля ввода. По крайней мере я думаю что можно, но я только рядом размещал. Это должно сохранить стиль игры и функциональность нативные ввода.

#36
11:44, 20 дек. 2016

проверял в IOS - там всё нормально, не нужно ничего дополнительно мудрить

#37
11:55, 20 дек. 2016

Да, придётся копать. Я подозреваю, что имеет место что-то типа асинхронной гонки условий, каждое событие обрабатывается параллельно:
lost focus от предыдущего LineEdit прячет клавиатуру, а got focus от следующего LineEdit показывает клавиатуру.
И получается так, что потеря фокуса срабатывает позже получения фокуса (это мой дедуктивный метод подсказывает, но надо всетки код смотреть)

#38
12:03, 20 дек. 2016
проверял в IOS - там всё нормально
Это получается именно на андроиде - рассинхрон?) Может там клава дольше реагирует на события...
#39
12:15, 20 дек. 2016
Можно контролировать с урхой сделать фоном и поверх него разместить нативные поля ввода
интересно, в примерах есть рядом расположенные окна, но чтобы в одном окне - не думал что такое возможно...
#40
12:38, 20 дек. 2016

Пока раскуривал сорцы - меня осенило: Надо отключить клавиатуру в UI и самому её показывать (и прятать):

  ....
  UI.SubscribeToFocusChanged(HandleFocusChanged);
  UI.UseScreenKeyboard = false;
  ....
}

private void HandleFocusChanged(FocusChangedEventArgs obj)
{
  if (obj.ClickedElement == null)
  {
    Input.ScreenKeyboardVisible = false;
    return;
  }

  if (obj.ClickedElement.TypeName != "LineEdit")
  {
    Input.ScreenKeyboardVisible = false;
  }else
  {
    Input.ScreenKeyboardVisible = true;
  }
      
}
Это работает как я хочу.  Но теперь не срабатывает кнопка Ентер на клавиатуре, (клавиатура должна пропадать)
Теперь ищу где это ловить

#41
12:53, 20 дек. 2016

 
  ....
  UI.SubscribeToFocusChanged(HandleFocusChanged);
  UI.UseScreenKeyboard = false;
  Input.SubscribeToKeyUp(HandleKeyUp);
  ....
}

private void HandleKeyUp(KeyUpEventArgs obj)
{
  if(obj.Scancode == 40)//это ентер, я посмотрел в отладчике
  {
    Input.ScreenKeyboardVisible = false;
  }
}

Так работает, но поле ввода остается в фокусе, и продолжает мигать курсор, ну и естественно, если еще раз нажать на этом поле - клавиши не появляются (фокус не был изменен)
Так что я добавил, чтоб показывало клавиатуру при клике на контрол тоже.
Полное окостыление. :)

#42
13:12, 20 дек. 2016

Теперь бы еще разобраться, как показывать только цифровую клавиатуру

#43
13:31, 20 дек. 2016
Теперь бы еще разобраться, как показывать только цифровую клавиатуру
разберешься - поделись)
#44
23:31, 20 дек. 2016

Ну в общем менять тип клавиатуры малой кровью не получится, во всяком случае у меня.
Тип клавиатуры нативно задаётся в поле ввода, но это касается forms.
Ну в принцыпе, мне не очень-то и нужны эти разные типы клавиатур, но если делать что-то "добротное" - надо чтобы менялось
Попробую написать фич реквест у них там на форуме, не знаю.

Страницы: 1 2 3
Urho3DФорумURHOSHARP

Тема в архиве.