2010-10-02 8 views
0

Est-il possible d'utiliser les contrôles MKPinAnnotationView dans une application qui n'a rien à voir avec les cartes. Je ne veux pas utiliser MKMapView, je veux juste réutiliser le contrôle MKPinAnnotationView et être capable de le déposer à une coordonnée d'écran spécifique.Utilisation personnalisée de MKPinAnnotationView

Merci, Cristian

Répondre

0

Eh bien, il dérive de UIView il semble donc possible en théorie, mais il ne peut pas se comporter correctement si son superview est pas un MKMapView. Je voudrais l'essayer et voir ce qui se passe (et laissez le reste d'entre nous savoir).

Alternativement, il ne serait pas trop difficile de créer votre propre sous-classe UIView qui se comporte de manière très similaire à MKPinAnnotationView. (Je souscrirais probablement UIControl puisque vous voudrez probablement pouvoir répondre aux événements d'utilisateur.)

EDIT: J'ai juste essayé une implémentation très basique et cela semble fonctionner correctement. Voici le code que j'ai utilisé dans mon contrôleur de vue. MyAnnotation est une classe très simple qui implémente le protocole MKAnnotation.

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    MyAnnotation *annotation = [[[MyAnnotation alloc] init] autorelease]; 

    MKPinAnnotationView *pinView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:nil] autorelease]; 
    pinView.center = self.view.center; 
    [self.view addSubview:pinView]; 
} 

Une autre mise à jour: Eh bien, les écrans de broches, mais ce n'est pas draggable même si draggable = YES, et la légende ne semble pas même si canShowCallout = YES. Cela est logique étant donné que ces comportements sont réellement contrôlés par la vue de la carte, et non par la vue réelle de la broche. Par conséquent, si vous voulez simplement afficher une épingle avec une ombre sur votre vue, cela fonctionne très bien. Si vous souhaitez obtenir certaines fonctionnalités lorsque la broche est affichée dans une vue de carte, vous devez l'implémenter vous-même dans votre vue ou afficher le contrôleur.

+0

Vous n'avez pas besoin de sous-classer 'UIControl' pour répondre aux événements tactiles. – rpetrich

+0

C'est vrai, mais il est beaucoup plus facile de répondre aux événements de contrôle que de gérer vous-même. –

+0

Merci pour la réponse, je sautillais que cela pourrait être fait en mettant en œuvre MKMapViewDelegate ou quelque chose comme ça. Je suis plus un programmeur en C/C++ et tous ces trucs d'objectif-c m'effraient un peu. La broche avait aussi quelques animations qui avaient l'air cool, ce qui peut être difficile à faire pour moi. – Cristi

Questions connexes