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();