I wouldn't go singleton unless the state of the machine should be consistent across multiple annotations on multiple views.
I would generally be looking at giving the ownership to the view controller which owns the annotation. The view controller subscribes to all of the events and updates the state machine, it then applies the state machine result to the annotation.