【发布时间】:2019-01-01 23:19:17
【问题描述】:
我正在编写一个 Xamarin Forms 应用程序(.net 标准 2.0)。目前它仅针对 Android 开发,但将来可能会针对其他操作系统发布。我试图管理的场景是这样的:
- 用户使用单个条目进入 ContentPage
-
我通过在自定义渲染器中使用原生 Android 代码来赋予条目焦点:
if (e.NewElement != null && e.NewElement is CustomEntry) { CustomEntry customEntry = (CustomEntry)e.NewElement; if(customEntry.GiveFocus) { //this messes up the onback behaviour - you have to press onback twice to exit the screen, once to get out of the hidden SIP Control.RequestFocus(); } } -
我不希望软键盘自动弹出。因此,我在 MainActivity 的 OnCreate 中添加了以下行:
Window.SetSoftInputMode(SoftInput.StateAlwaysHidden);
我在自定义渲染器而不是 Xamarin Forms 条目中请求焦点的原因是我可以看到键盘弹出窗口,然后当我在 Xamarin Forms 控件中请求它时立即消失。我不希望键盘出现,因为此应用程序主要由具有硬件键盘的工业设备用户使用,但该条目需要具有焦点,因为用户希望立即在其中输入文本。
我的问题是在这种情况下用户必须按两次后退按钮才能退出 ContentPage。一次退出隐藏键盘(条目失去焦点),然后再次退出页面。我想避免这种情况——当键盘被隐藏时,他们应该能够一键退出页面。有谁知道如何解决这个问题?正如其他答案所建议的那样,我已经尝试在自定义渲染器中覆盖 OnKeyPreIme,但它似乎没有检测到返回点击。
【问题讨论】:
标签: android xamarin.forms android-softkeyboard back