J'ai actuellement une vue cartographique avec une annotation dessus. J'ai l'annotation avec des images personnalisées. Le problème que j'essaie de résoudre est la sensibilité des images. Lorsque j'essaie de les faire glisser, on ressent que je dois toucher le centre exact pour qu'il soit concentré sur. Y a-t-il un moyen de rendre les limites tactiles plus grandes? P>
4 Réponses :
J'ai mis en œuvre quelque chose de similaire de la manière suivante p>
La sous-classe de reconnaissance de gestes gérera vos gestes si vous les effectuez à tout moment de l'image. Cela devrait vous aider. p>
Gardez-nous au courant de la question de savoir si cette solution a fonctionné pour vous ... P>
Avez-vous membre de la sous-classe MkannotationView ou avez-vous changé la propriété de l'image de l'image? P>
Voici la documentation pour définir la propriété Image. p>
Discussion: L'attribution d'une nouvelle image sur cette propriété modifie également la taille du cadre de la vue afin qu'elle correspond à la largeur et à la hauteur de la nouvelle image. La position du cadre de la vue ne change pas. P> blockQuote>
Vérifiez la taille du cadre de votre affichage d'annotation, qui est l'endroit où votre objet peut recevoir des touches. P>
Pour ce faire, vous devez sousclure mkannotationview code> pour créer votre propre
mkannotationview code>. Dans votre sous-classe, remplacez les fonctions suivantes:
- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent*)event
{
UIView* hitView = [super hitTest:point withEvent:event];
if (hitView != nil)
{
// ensure that the callout appears above all other views
[self.superview bringSubviewToFront:self];
// we tapped inside the callout
if (CGRectContainsPoint(self.resultView.callButton.frame, point))
{
hitView = self.resultView.callButton;
}
else if (CGRectContainsPoint(self.resultView.addButton.frame, point))
{
hitView = self.resultView.addButton;
}
else
{
hitView = self.resultView.viewDetailsButton;
}
[self preventSelectionChange];
}
return hitView;
}
Pourriez-vous mettre en œuvre la méthode Hittest s'il vous plaît?
Si je pouvais recommencer à voter votre réponse, je le ferais! Merci pour la mise à jour.
Salut à nouveau, que diriez-vous de Pointinide: Sans:? Est-ce là où vous proposez CGrectContainSpoint d'être mis en œuvre?
@Daniel Oui, vous pouvez également utiliser la même implémentation pour les deux méthodes afin de déterminer si le point doit être considéré comme «à l'intérieur» de votre annotation ou non. Toutefois, Pointinide: Windoppent est susceptible d'être beaucoup plus simple et de retourner simplement oui si le point est à l'intérieur de votre rectangle de vision ultime. La seule fois que vous auriez besoin de retourner non, c'est lorsque vous avez des zones transparentes qui devraient être considérées comme «à l'extérieur», même s'ils tombent dans le rectangle de liaison.
Je peux recevoir des événements de toucher sur mon bouton, mais Touchez-le à l'intérieur ne déclenche pas, la vue Carte semble capturer cela et traite de désélectionner l'annotation. Des pensées ?
Mettez en œuvre les deux méthodes et ils doivent être cohérents - c'est-à-dire si Pointinide renvoie Oui, alors Hittest doit renvoyer une vue valide. Si Pointinide revient non, je ne pense pas que Hittest soit même appelé. De plus, vous voudrez peut-être éviter la désélection, car les annotations par défaut permettent d'autres annotations qui sont sélectionnées pour être sélectionnées.
Pas pour moi! exemple plz.
@jhabbott Solution n'a jamais travaillé pour moi, comme je l'ai mentionné ici .
J'ai une image et une étiquette cote à cote. L'image a été montrée en définissant l'annotationview J'ai redirigé le point de fonctionnement Enfin, j'ai fini par élargir le cadre MkannotationView pour joindre une étiquette + image, je définis Parce que je voulais le point d'ancrage au milieu de l'image, je devais définir une personnalité: p> puis j'ai supprimé le point et maintenant, pour la première fois, ma vue d'annotation est totalement réactive. p> p> image code> Image et l'étiquette en ajoutant un
uilabel code> p>
:) code> méthode sur
uilabel code> un (qui incluait la zone d'image) et
Hittest code> a renvoyé exactement la même vue si j'ai cliqué sur l'étiquette ou l'image. Mais label clic n'a produit pas de rappel ... p>
annotationview.image code> sur
nil code>, et j'ai créé mon
uiImageView code>. p>
(à l'intérieur: avec :) code> et
Hittest (point: avec :) code> des substituts qui n'ont rien fait. p>