@Rob:
My use case is the following: I am building an app which interacts with the user via the keyboard only. For reasons of visual appearance, I have hiden the native text field outside of the screen and I display the text (that the user enters) as a TextObject in a custom "speech bubble"instead. As the user types the text, character by character is added to the TextObject in the speech bubble.
It would be easy to just copy event.text as the user enters the characters, but the “iOS smart punctuation” screws up words like “I’m” so that the TextObject becomes “Im” since the “smart” apostrophe is not recognized as a normal apostrophe. By using newCharacters I can analyse each new character and replace the “smart” apostrophe if there is one:
if (newCharacter == "'") then currentText = currentText .. "'" else currentText = currentText .. newCharacter end
(I know that the code above looks strange but it actually works, the smart apostrophe is replaced by a regular one).
So, the situation is that newCharacters does not work on Android and event.text does not always work on iOS (due to the smart punctuation) when copied to TextObject.text. A possible workaround could be to analyse the last character of event.text instead but I will have to confirm that after some further analysis.