It’s a crappy rule, but the referees got the call right.
Here’s the wording of the NFL ruling:
“If a player goes to the ground in the act of catching a pass (with or without contact by an opponent), he must maintain control of the ball after he touches the ground, whether in the field of play or the end zone. If he loses control of the ball, and the ball touches the ground before he regains control, the pass is incomplete. If he regains control prior to the ball touching the ground, the pass is complete.”
So, basically Calvin Johnson had to keep the ball from touching the ground the entire time he was falling. He should have fallen to the ground with the ball in his hands (while not letting it touch the ground), got up with the ball in his hands and tossed it to the ref or celebrated with the ball. It’s a rough rule/interpretation but the right call was made based on the NFL Rulebook.
Something about this rule needs to be changed, though.