diff --git a/src/Android/Avalonia.Android/AvaloniaView.cs b/src/Android/Avalonia.Android/AvaloniaView.cs index cb03d85fc2..92a6a818ed 100644 --- a/src/Android/Avalonia.Android/AvaloniaView.cs +++ b/src/Android/Avalonia.Android/AvaloniaView.cs @@ -66,7 +66,9 @@ namespace Avalonia.Android public override bool DispatchKeyEvent(KeyEvent? e) { - return _view.View.DispatchKeyEvent(e); + if (!_view.View.DispatchKeyEvent(e)) + return base.DispatchKeyEvent(e); + return true; } [SupportedOSPlatform("android24.0")] diff --git a/src/Android/Avalonia.Android/Platform/Specific/Helpers/AndroidKeyboardEventsHelper.cs b/src/Android/Avalonia.Android/Platform/Specific/Helpers/AndroidKeyboardEventsHelper.cs index a97c42577e..58fc59f804 100644 --- a/src/Android/Avalonia.Android/Platform/Specific/Helpers/AndroidKeyboardEventsHelper.cs +++ b/src/Android/Avalonia.Android/Platform/Specific/Helpers/AndroidKeyboardEventsHelper.cs @@ -70,6 +70,8 @@ namespace Avalonia.Android.Platform.Specific.Helpers _view.Input?.Invoke(rawKeyEvent); + bool handled = rawKeyEvent.Handled; + if ((e.Action == KeyEventActions.Down && e.UnicodeChar >= 32) || unicodeTextInput != null) { @@ -80,6 +82,8 @@ namespace Avalonia.Android.Platform.Specific.Helpers unicodeTextInput ?? Convert.ToChar(e.UnicodeChar).ToString() ); _view.Input?.Invoke(rawTextEvent); + + handled = handled || rawTextEvent.Handled; } if (e.Action == KeyEventActions.Up) @@ -90,7 +94,7 @@ namespace Avalonia.Android.Platform.Specific.Helpers } callBase = false; - return false; + return handled; } private static RawInputModifiers GetModifierKeys(KeyEvent e)