Hey Kan,
I think there are two problems you might be encountering.
1: (see line 2)
"On touched" is a triggered condition, not a per-tick condition, so when it is triggered, it will only simulate the up movement for a single tick, and then stop until it is triggered again by a new touch. By contrast, holding down the up arrow key on the keyboard, is the equivalent of executing the "simulate up movement" action every tick (every frame), for as long as the key is held. (You can recognize triggered conditions, by the green arrow icon that always appears next to them.)
2: (see line 5)
For the condition, when the player is "jumping", AND while Keyboard Up arrow is NOT pressed, the corresponding action is cutting your upward speed in half every tick (60 times a second).
This isn't an issue when using the keyboard controls, because you actually are holding down the up arrow key when jumping.
However, it *is* an issue when "touching" the up button in the game, because you are now not holding down the keyboard up arrow key, so your upward speed is getting cut in half every tick because of that event.
Try the following...
Line 2:
Change the condition
"? On touched arrow_up"
to
"Is touching arrow_up"
Line 5:
Find the event containing the condition shown below, and disable that entire event, (not just the condition):
"? Up arrow is down" condition (line 5).
That should make the jumps identical, but now you can't make a small jump.
To fix this, enable the line 5 event again, and split the "? Up arrow is down" condition into its own subevent (under the "Platform is jumping" event), and move the action onto this new sub event.
Finally, to the new subevent, add the condition "Is touching arrow_up", and then invert that condition, to create "? Is touching arrow_up".
Now your upward speed will only be cut short if, you're not holding the up key, AND you're not holding the on-screen up button.
Hope that does what you're looking for.