Obama's response that McCain has shown that he has "no honor" by running his misleading argument is a loser. People don't care about honor in political campaigns; in fact, they prefer someone who is willing to do anything to win.
Instead, Obama should run a television ad with the following script:
John McCain opposes a bill to teach young children how to avoid sexual predators.
Is that the future John McCain wants for America's children?
Unlike John McCain, Barack Obama supported a bill to make it harder for sexual predators to abuse our children.
Barack Obama -- he'll protect our children.
Everything in this script is strictly true. Let McCain try and parse it if he dares; we will be playing offense, not defense. Let this bill be an attack on McCain, not something Barack has to defend.
Apply this same principle to all campaign ads. Turn all attacks into counterattacks.