隐藏软键盘的 Xamarin Forms 自定义条目渲染器
Xamarin Forms custom Entry renderer that hides soft keyboard
在 Xamarin Forms 应用程序中,我正在尝试创建一个自定义 Entry
实现,该实现在获得焦点时不会自动显示软键盘。目标是将此条目的一个实例与页面上的其他常规条目一起使用。
我熟悉用于自定义视图渲染的推荐 Xamarin Forms 模式,并成功创建了 Entry 及其渲染器,如下所示:
public class BlindEntry : Entry
{
}
[assembly: ExportRenderer(typeof(BlindEntry), typeof(BlindEntryRenderer))]
public class BlindEntryRenderer : EntryRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
if (Control != null)
{
Control.FocusChange += Control_FocusChange;
}
}
private void Control_FocusChange(object sender, FocusChangeEventArgs e)
{
if (e.HasFocus)
{
// What goes here?
}
else
{
// What goes here?
}
}
}
要显示和隐藏软键盘,我想 this question 的建议之一会提供解决方案,但对于最佳方法有很多不同的意见。此外,即使在选择了合适的模式之后,我也不清楚如何从上述自定义渲染器中访问所需的本机 Android API。
例如,我知道我可以使用以下调用(从 Activity
中)获得对 InputMethodManager
的引用,但是如何引用包含 activity 从渲染器内部:
var imm = GetSystemService(InputMethodService)
提前感谢您的建议。
蒂姆
在 OnElementChanged()
:
中试试这个
Control.InputType = Android.Text.InputTypes.Null;
这将防止在选择条目时出现键盘而无需检查其焦点。
===编辑===
原来确实有 ShowSoftInputOnFocus
property 可用于执行此操作。
Control.ShowSoftInputOnFocus = false;
在 Xamarin Forms 应用程序中,我正在尝试创建一个自定义 Entry
实现,该实现在获得焦点时不会自动显示软键盘。目标是将此条目的一个实例与页面上的其他常规条目一起使用。
我熟悉用于自定义视图渲染的推荐 Xamarin Forms 模式,并成功创建了 Entry 及其渲染器,如下所示:
public class BlindEntry : Entry
{
}
[assembly: ExportRenderer(typeof(BlindEntry), typeof(BlindEntryRenderer))]
public class BlindEntryRenderer : EntryRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
if (Control != null)
{
Control.FocusChange += Control_FocusChange;
}
}
private void Control_FocusChange(object sender, FocusChangeEventArgs e)
{
if (e.HasFocus)
{
// What goes here?
}
else
{
// What goes here?
}
}
}
要显示和隐藏软键盘,我想 this question 的建议之一会提供解决方案,但对于最佳方法有很多不同的意见。此外,即使在选择了合适的模式之后,我也不清楚如何从上述自定义渲染器中访问所需的本机 Android API。
例如,我知道我可以使用以下调用(从 Activity
中)获得对 InputMethodManager
的引用,但是如何引用包含 activity 从渲染器内部:
var imm = GetSystemService(InputMethodService)
提前感谢您的建议。
蒂姆
在 OnElementChanged()
:
Control.InputType = Android.Text.InputTypes.Null;
这将防止在选择条目时出现键盘而无需检查其焦点。
===编辑===
原来确实有 ShowSoftInputOnFocus
property 可用于执行此操作。
Control.ShowSoftInputOnFocus = false;