Как скрыть экранную клавиатуру для отображения при фокусировке Entry
в проекте переносных форм Xamarin.forms? Я полагаю, что мы должны написать специфичные для платформы рендеры для этого, но следующий не работает:Скрыть программную клавиатуру в Xamarin
Я создаю свой собственный вход подкласс:
public class MyExtendedEntry : Entry
{
}
, а затем в xamarin.android проекте мой рендер:
public class MyExtendedEntryRenderer : EntryRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
if (Control != null)
{
new Handler().Post(delegate
{
var imm = (InputMethodManager)Control.Context.GetSystemService(Context.InputMethodService);
var result = imm.HideSoftInputFromWindow(Control.WindowToken, 0);
});
}
}
}
OnElementChanged
вызывается как ожидалось, и при использовании Handler.Post()
я также получаю WindowToken вместо null. К сожалению, возвращаемое значение от HideSoftInputFromWindow
всегда неверно, а экранная клавиатура все же появляется при нажатии на запись.
К сожалению 'result' еще ложь и клавиатура отображается. – Voo
Я обнаружил, что если пользователь нажмет на него второй раз, фокус не изменился, поэтому я добавил также обработчик событий Click. Я попытался использовать свою заметку 3, и она работает, и возвращается «True». –