Убедитесь, что вы установили для делегата mapView значение self ..., которое должно фиксировать цвет булавки.Не уверен насчет вашей другой проблемы
// в viewDidLoad [mapView setDelegate: self];
где «mapView» определяется как «IBOutlet MKMapView * mapView;»