The problem is that gravity is an acceleration, and it never stops. (Actually I guess that is a good thing.) Your user motion is "hidden" in the combination of user acceleration (muscle-based motion) and gravity. That is because you are using raw accelerometer data. That is kind of a silly thing to do.
You can roughly filter out gravity with a high-pass filter. Apple has plenty of example code showing how to do that.
However, it would be much more sensible to use CMDeviceMotion (startDeviceMotionUpdatesUsingReferenceFrame:
), which gives you a userAcceleration
property which has already performed this filtering far more accurately, and with less latency, than you could possibly do it.