You could add the touch event listener to the SPSprite and then work out which tile on the map should have fired the event. Once you get the SPTouch object from the event, you can use [touch locationInSpace:self] and then decide which tile owns touches with those coordinates. Then just call a function on that tile to process the event.
Edit:
If the player is able to drag these tiles, then you'd need to do the calculation for which tile got touched on the SPTouchPhaseBegan phase and then set an ivar to identify the tile. The SPSprite would then just be a conduit for touch events for this tile until SPTouchPhaseEnded occurs, when everything is reset.