在Xamarin.Forms中,我可以通过创建自定义渲染器并使用适用于Android的ShowSoftInputOnFocus和适用于iOS的InputView来防止Entry视图获得焦点时弹出键盘。
但是在UWP中我可以用来阻止它吗?
答案 0 :(得分: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();
}
});