UserInputService:GetMouseDelta() returns non-zero values after touch input stops on iOS

Reproduction Steps

You can find this reproduction file published live here (uncopylocked), or download the
place file here (41.6 KB).

To reproduce the issue in the repro place,

  1. Join on an iOS device
  2. Drag your finger on the screen to move the camera
  3. Lift your finger
  4. Note the non-zero x and y values, indicating :GetMouseDelta() is not returning <0, 0> when it should be

All the repro place does is print out what the return values of UserInputService:GetMouseDelta() are to a TextLabel.

Expected Behavior

> On all devices, the x and y values should both be 0 when lifting my finger from the screen after dragging the camera.

Actual Behavior

> On iOS devices, the x and y values remain at the last value before lifting my finger, which can be non-zero. It does not snap back to 0,0 after lifting my finger like it should.

On all iOS devices I’ve tested (3 that I have access to), UserInputService:GetMouseDelta() continues to return non-zero values in the delta Vector2 after touch input stops.

This only happens to me on iOS devices: It happened on all three iOS devices I tested, which is an iPhone 11, iPhone 13, and iPhone XS Max. I tried an Samsung Galaxy Note 10+ running android and it did not happen. I tried on two Windows 10 PCs and it did not happen on either.

Here are videos of a reproduction file running on iOS, Android, and Windows 10:

iOS (Bug occurs)

Notice how the x and y values continue showing a non-zero value after my finger lifts off the screen (you can tell when my finger isn’t dragging on the screen because the camera stops moving). These values should be 0, so this is unexpected behavior.

Android (Bug does not occur)

Notice how the x and y values return 0 when my finger isn’t dragging on the screen. This is expected behavior.

Windows 10 (Bug does not occur)

Notice how the x and y values return 0 when my mouse stops moving. This is expected behavior.

You can find this reproduction file published live here (uncopylocked), or download the
place file here (41.6 KB).

This is impacting my workflow because I depend on :GetMouseDelta() to read input for a sniper scope in my game. This makes my sniper scope drift on iOS devices because it’s receiving input after the user lifts their finger, which makes it impossible to accurately snipe anything.

Workaround

No workaround figured out yet, but I might be able to do something like ignoring input when no fingers are on the screen.

Issue Area: Mobile App
Issue Type: Other
Impact: High
Frequency: Constantly
Date First Experienced: 2022-06-19 18:06:00 (-07:00)
Date Last Experienced: 2022-06-19 18:06:00 (-07:00)
A private message is associated with this bug report

5 Likes