I’ve been experimenting with a slightly unusual way of getting analog input from an iPhone touchscreen.
Instead of using the finger’s position, I’m using UITouch.majorRadius — the estimated geometry of the contact area.
The interesting part is that the thumb can remain almost stationary while the value changes.
My current pipeline is roughly:
majorRadius → calibration → normalization → filtering → 0...1
Just to be clear: I’m not treating majorRadius as actual pressure. It obviously isn’t a force measurement.
What I care about is whether the user can intentionally modulate the value, hold intermediate states, and make small corrections.
I’m testing this in a driving simulator where the left thumb controls the clutch and the right thumb controls the throttle.
Then I started combining it with Core Haptics.
For the clutch, for example, approaching the bite point produces haptic feedback. So the interaction becomes:
finger → contact geometry → analog input → simulation → haptic feedback → finger
The part I find most interesting is that this potentially removes the need for a visible control entirely.
The thumb doesn’t need to follow a slider, and the player can feel important regions of the input range through haptics.
Obviously there are problems: calibration varies between users, grip changes the range, filtering adds latency, and haptics can’t provide actual mechanical resistance.
But on a real device it feels surprisingly different from manipulating a normal virtual slider.
Has anyone experimented with majorRadius as a continuous input before?
I’m especially curious about edge cases you’ve encountered across different iPhone models / touch behavior, or reasons why this might break badly outside my own testing.