A post in a Y Combinator discussion thread:
Mobile Safari parses websites as a big canvas and then pretends the screen is a window through which you’re looking at the canvas. What you think of as scrolling, the browser thinks of as moving the canvas around (or the window depending on point of view).
Because of that, no scroll events ever get fired. Even :fixed doesn’t behave as expected.