Fire TextInputClient.updateEditingState on text changes (iOS) (flutter/engine#3995)

For consistency with Android, when the engine receives a
TextInput.setEditingState message from the framework, and the text has
changed, we now send a TextInputClient.updateEditingState message back
to the framework with the updated state from the engine. The framework
currently relies on this behaviour to trigger onChanged events in
certain scenarios (e.g., on tapping Paste in the selection controls).

Note: it may be more desirable for the framework to trigger the
onChanged calls without relying on the return message from the engine,
but this change ensures consistent behaviour across iOS and Android
until we've evaluated the pros/cons of such an approach.
This commit is contained in:
Chris Bracken 2017-08-21 12:39:56 -07:00 committed by GitHub
parent 86cbd63193
commit 1fda50a2c0

View File

@ -196,8 +196,12 @@ static UITextAutocapitalizationType ToUITextAutocapitalizationType(NSString* inp
[self.inputDelegate selectionDidChange:self];
}
if (textChanged)
if (textChanged) {
[self.inputDelegate textDidChange:self];
// For consistency with Android behavior, send an update to the framework.
[self updateEditingState];
}
}
#pragma mark - UIResponder Overrides