diff --git a/samples/ControlCatalog.iOS/ControlCatalog.iOS.csproj b/samples/ControlCatalog.iOS/ControlCatalog.iOS.csproj index 513ac44f83..74d5b2fd8c 100644 --- a/samples/ControlCatalog.iOS/ControlCatalog.iOS.csproj +++ b/samples/ControlCatalog.iOS/ControlCatalog.iOS.csproj @@ -9,6 +9,9 @@ iossimulator-x64 + + iPhone Developer + diff --git a/src/iOS/Avalonia.iOS/AvaloniaView.Text.cs b/src/iOS/Avalonia.iOS/AvaloniaView.Text.cs index d49ce5310c..a386f35fed 100644 --- a/src/iOS/Avalonia.iOS/AvaloniaView.Text.cs +++ b/src/iOS/Avalonia.iOS/AvaloniaView.Text.cs @@ -13,8 +13,15 @@ namespace Avalonia.iOS; [Adopts("UIKeyInput")] public partial class AvaloniaView : ITextInputMethodImpl { - private ITextInputMethodClient? _currentClient; + private IUITextInputDelegate _inputDelegate; + private ITextInputMethodClient? _client; + class TextInputHandler : UITextInputDelegate + { + } + + public ITextInputMethodClient? Client => _client; + public bool IsActive => _client != null; public override bool CanResignFirstResponder => true; public override bool CanBecomeFirstResponder => true; @@ -23,8 +30,8 @@ public partial class AvaloniaView : ITextInputMethodImpl { get { - if (_currentClient is { } && _currentClient.SupportsSurroundingText && - _currentClient.SurroundingText.Text.Length > 0) + if (Client is { } && Client.SupportsSurroundingText && + Client.SurroundingText.Text.Length > 0) { return true; } @@ -47,6 +54,8 @@ public partial class AvaloniaView : ITextInputMethodImpl } } + public IUITextInputDelegate InputDelegate => _inputDelegate; + [Export("deleteBackward")] public void DeleteBackward() { @@ -63,9 +72,9 @@ public partial class AvaloniaView : ITextInputMethodImpl void ITextInputMethodImpl.SetClient(ITextInputMethodClient? client) { - _currentClient = client; + _client = client; - if (client is { }) + if (_client is { }) { BecomeFirstResponder(); } diff --git a/src/iOS/Avalonia.iOS/AvaloniaView.cs b/src/iOS/Avalonia.iOS/AvaloniaView.cs index cc40401638..b114ed9468 100644 --- a/src/iOS/Avalonia.iOS/AvaloniaView.cs +++ b/src/iOS/Avalonia.iOS/AvaloniaView.cs @@ -30,6 +30,8 @@ namespace Avalonia.iOS _topLevelImpl = new TopLevelImpl(this); _touches = new TouchHandler(this, _topLevelImpl); _topLevel = new EmbeddableControlRoot(_topLevelImpl); + _inputDelegate = new TextInputHandler(); + _topLevel.Prepare(); _topLevel.Renderer.Start();