问题
In Xamarin.Forms, I can prevent keyboard from popping up when Entry view receives focus by creating custom renderers and using ShowSoftInputOnFocus for Android and InputView for iOS.
But what can I use to prevent it in UWP?
回答1:
prevent keyboard from popping up when Entry view receives focus
UWP has direct API support to hide and show the InputPane. You could invoke TryHide
method to hide keyboard. For xamarin you could use DependencyService
to approach. For more please refer the following code.
Interface
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);
}
}
Usage
DependencyService.Get<IKeyboard>().RegisterAction((s,e)=> {
if (e == KeyboardState.Show)
{
var keyboard = s as IKeyboard;
keyboard.HideKeyboard();
}
});
来源:https://stackoverflow.com/questions/53439208/xamarin-forms-prevent-keyboard-from-showing-on-entry-focus-in-uwp-android-io