Xamarin Forms - 防止键盘在 UWP、Android、iOS 中的条目焦点上显示
Posted
技术标签:
【中文标题】Xamarin Forms - 防止键盘在 UWP、Android、iOS 中的条目焦点上显示【英文标题】:Xamarin Forms - Prevent Keyboard from Showing on Entry Focus in UWP, Android, iOS 【发布时间】:2019-04-25 14:59:29 【问题描述】:在 Xamarin.Forms 中,我可以通过创建自定义渲染器并使用适用于 android 的 ShowSoftInputOnFocus 和适用于 ios 的 InputView 来防止在 Entry 视图获得焦点时弹出键盘。
但是我可以在 UWP 中使用什么来防止它发生?
【问题讨论】:
嗨@cd491415,您有没有找到任何解决方案来防止软键盘在 xamarin 表单 uwp 的输入焦点上弹出? 【参考方案1】:当Entry视图获得焦点时防止键盘弹出
UWP 有直接的 API 支持来隐藏和显示 InputPane。您可以调用TryHide
方法来隐藏键盘。对于 xamarin,您可以使用 DependencyService
来接近。更多内容请参考以下代码。
界面
public interface IKeyboard
void HideKeyboard();
void ShowKeyboard();
void RegisterAction(Action<object, KeyboardState> callback);
public enum KeyboardState
Hide,
Show
KeyboardImplementation.cs
public class KeyboardImplementation : IKeyboard
private InputPane _inputPane;
private Action<object, KeyboardState> action;
public KeyboardImplementation()
_inputPane = InputPane.GetForCurrentView();
_inputPane.Showing += OnInputPaneShowing;
_inputPane.Hiding += OnInputPaneHiding;
public void HideKeyboard()
_inputPane.TryHide();
public void ShowKeyboard()
_inputPane.TryShow();
public void RegisterAction(Action<object, KeyboardState> callback)
action = callback;
private void OnInputPaneHiding(InputPane sender, InputPaneVisibilityEventArgs args)
action(this, KeyboardState.Hide);
private void OnInputPaneShowing(InputPane sender, InputPaneVisibilityEventArgs args)
action(this, KeyboardState.Show);
用法
DependencyService.Get<IKeyboard>().RegisterAction((s,e)=>
if (e == KeyboardState.Show)
var keyboard = s as IKeyboard;
keyboard.HideKeyboard();
);
【讨论】:
@NicoShu 感谢 Nico,但此解决方案将显示软键盘然后将其隐藏。我正在寻找一种解决方案,当 Entry 获得焦点时根本不显示键盘。我发现文章解释了如何使用自定义条目渲染器和适用于 Android 的 ShowSoftInputOnFocus 和 iOS 上的 InputView,但自定义渲染器执行相同操作,键盘仍会短暂显示,然后消失。您的建议也是如此,这使事情变得更糟,因为用户现在不断弹出键盘然后自行消失。 是的,这个解决方案只是用来隐藏键盘,它是全局设置。它可以灵活地在界面中制作取消订阅方法。 uwp 中还有另一种解决方案,请参考case reply。如果您认为可行,我可以帮助为 xamarinEntry
控件制作一个插件。
感谢@NicoShu,但我不是在寻找隐藏键盘的解决方案。一旦自定义条目获得焦点,我正在寻找 防止 键盘完全显示的解决方案。弹出键盘然后隐藏它会使情况变得更糟。
是的,我知道,但目前,xaml 控件没有这样的属性。如果您确实需要此功能,请随时将其发布到user voice。
您提供的链接根本没有请求 Xamarin Forms 功能的区域??以上是关于Xamarin Forms - 防止键盘在 UWP、Android、iOS 中的条目焦点上显示的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin.Forms.Picker 内容在 UWP 中重复
Xamarin.Forms (UWP) - 如何获取 WebView 的 DOM 作为 HTML 字符串?
使用 PlatformConfiguration (Xamarin.Forms 2.3.3) 在 UWP 中将工具栏移动到底部