One problem certainly is that you allow multiple move actions to stop, so every time you tap another move action runs regardless of whether there's already a move action running. So remove the move actions (or all of them) before running a new one:
[_player stopAllActions]; // or: remove by tag
[_player runAction:actionMove];
Next, if none of your if/else are true then the value of playerMove is left undefined:
float playerMove;
If that were to happen the variable may hold any value at random, possibly moving the node far, far away from the screen. That'll make it appear like the sprite would simply disappear and give you a hard time to figure out what's going on.
It is good practice, very good practice indeed, to always initialize standard value types with a default value:
float playerMove = 0.0;