Measure length tape dispenser
You might be able to use an optical flow sensor. If there is enough variation in the surface of the tape, it could tell you how much tape has dispensed. A way to test this quickly is to make a solid square out of the tape and see if an optical mouse works on it. There are Arduino libraries for some optical flow sensors too. The other two best ways would probably be an optical encoder along the rotating shaft or a potentiometer based encoder. You mentioned having trouble getting grip on the shaft, but I don't really understand what you mean by that. A variation on the encoder idea that would require a little more mechanical involvement would be to make two rollers that the tape is pulled between so they rotate. Then you could measure that rotation instead of the main shaft of the dispenser.