|
|
@ -27,11 +27,9 @@ namespace Avalonia.iOS |
|
|
private TouchHandler _touches; |
|
|
private TouchHandler _touches; |
|
|
private ITextInputMethodClient _client; |
|
|
private ITextInputMethodClient _client; |
|
|
private bool _isActive; |
|
|
private bool _isActive; |
|
|
private AvaloniaResponder _textResponder; |
|
|
|
|
|
|
|
|
|
|
|
public AvaloniaView() |
|
|
public AvaloniaView() |
|
|
{ |
|
|
{ |
|
|
_textResponder = new AvaloniaResponder(); |
|
|
|
|
|
_topLevelImpl = new TopLevelImpl(this); |
|
|
_topLevelImpl = new TopLevelImpl(this); |
|
|
_touches = new TouchHandler(this, _topLevelImpl); |
|
|
_touches = new TouchHandler(this, _topLevelImpl); |
|
|
_topLevel = new EmbeddableControlRoot(_topLevelImpl); |
|
|
_topLevel = new EmbeddableControlRoot(_topLevelImpl); |
|
|
@ -56,8 +54,6 @@ namespace Avalonia.iOS |
|
|
|
|
|
|
|
|
public override bool CanResignFirstResponder => true; |
|
|
public override bool CanResignFirstResponder => true; |
|
|
|
|
|
|
|
|
public override UIResponder NextResponder => _textResponder; |
|
|
|
|
|
|
|
|
|
|
|
internal class TopLevelImpl : ITopLevelImplWithTextInputMethod, ITopLevelImplWithNativeControlHost, |
|
|
internal class TopLevelImpl : ITopLevelImplWithTextInputMethod, ITopLevelImplWithNativeControlHost, |
|
|
ITopLevelImplWithStorageProvider |
|
|
ITopLevelImplWithStorageProvider |
|
|
{ |
|
|
{ |
|
|
@ -164,6 +160,8 @@ namespace Avalonia.iOS |
|
|
|
|
|
|
|
|
bool ITextInputMethodImpl.IsActive => _isActive; |
|
|
bool ITextInputMethodImpl.IsActive => _isActive; |
|
|
|
|
|
|
|
|
|
|
|
private AvaloniaResponder _currentResponder; |
|
|
|
|
|
|
|
|
void ITextInputMethodImpl.SetClient(ITextInputMethodClient client) |
|
|
void ITextInputMethodImpl.SetClient(ITextInputMethodClient client) |
|
|
{ |
|
|
{ |
|
|
if (_client != null) |
|
|
if (_client != null) |
|
|
@ -175,21 +173,23 @@ namespace Avalonia.iOS |
|
|
|
|
|
|
|
|
if (_client is { }) |
|
|
if (_client is { }) |
|
|
{ |
|
|
{ |
|
|
//_client.CursorRectangleChanged += ClientOnCursorRectangleChanged;
|
|
|
if (_currentResponder != null && _currentResponder.IsFirstResponder) |
|
|
//_client.SurroundingTextChanged += ClientOnSurroundingTextChanged;
|
|
|
{ |
|
|
_textResponder.BecomeFirstResponder(); |
|
|
_currentResponder.ResignFirstResponder(); |
|
|
|
|
|
_currentResponder = null; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
var x = _textResponder.IsFirstResponder; |
|
|
_currentResponder = new AvaloniaResponder(this, _client); |
|
|
|
|
|
//_client.CursorRectangleChanged += ClientOnCursorRectangleChanged;
|
|
|
var keyWindow = UIApplication.SharedApplication.KeyWindow; |
|
|
|
|
|
|
|
|
|
|
|
var windowNextResponder = keyWindow.NextResponder; |
|
|
//_client.SurroundingTextChanged += ClientOnSurroundingTextChanged;
|
|
|
|
|
|
_currentResponder.BecomeFirstResponder(); |
|
|
|
|
|
|
|
|
var nr1 = windowNextResponder.NextResponder; |
|
|
var x = _currentResponder.IsFirstResponder; |
|
|
} |
|
|
} |
|
|
else |
|
|
else |
|
|
{ |
|
|
{ |
|
|
_textResponder.ResignFirstResponder(); |
|
|
_currentResponder.ResignFirstResponder(); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -265,7 +265,7 @@ namespace Avalonia.iOS |
|
|
|
|
|
|
|
|
void ITextInputMethodImpl.Reset() |
|
|
void ITextInputMethodImpl.Reset() |
|
|
{ |
|
|
{ |
|
|
_textResponder?.ResignFirstResponder(); |
|
|
_currentResponder?.ResignFirstResponder(); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|