【发布时间】:2017-04-23 20:26:24
【问题描述】:
我有一个条目和一个按钮:
<StackLayout>
<CustomViews:ChatEntryView x:Name="ChatEntry" />
<Button Text="Send" Command="SendCommand"/>
</StackLayout>
我想在这里实现的是,当用户开始在 Entry 控件上键入内容然后按下按钮时,它不应该隐藏键盘(或失去 Entry Focus)。
这里的 ChatEntryView 实际上只是一个自定义视图,它继承自 Entry 控件以及我在里面所做的:
1.) 添加了 Unfocused 处理程序
Unfocused += ChatEntryView_Unfocused;
void ChatEntryView_Unfocused(object sender, FocusEventArgs e)
{
this.Focus();
}
2.) 尝试对 PropertyChanged 进行处理
protected override void OnPropertyChanged(string propertyName = null)
{
this.Focus();
base.OnPropertyChanged(propertyName);
}
3.) 尝试处理 PropertyChanging
protected override void OnPropertyChanging(string propertyName = null)
{
this.Focus();
base.OnPropertyChanging(propertyName);
}
但是这三种方法似乎都不起作用。我可以通过制作自定义渲染器来解决 IOS 问题,但它不是很整洁(实际上是与 IOS 上的 Control.ShouldEndEditing 接口)。
但我现在的问题是在 Android 上,因为我不完全知道如何在 Android 上执行此操作,并且没有我可以使用的 Control.ShouldEndEditing(Android 上的界面)。
使用上面的处理程序会发生什么,入口视图的键盘仍然失去焦点,然后立即再次获得焦点,这很奇怪。
键盘按下(失去焦点)然后向上推(强制焦点)。
【问题讨论】:
-
据我所知,使用焦点无法保持键盘显示。因为当你点击按钮时,入口的焦点会丢失,按钮会在那个时候获得焦点。键盘将隐藏。我认为您应该覆盖键盘行为。
标签: android xamarin xamarin.android xamarin.forms