UIImage la détection de toucher et glisser
Assez commun cette question, à laquelle j'ai quelques réponses et je suis presque là. J'ai un bouton qui, lorsqu'il est pressé, permettra de créer une image (code comme suit)
(numImages est mis à charge à ZÉRO et est utilisé comme un compte pour les numéros d'étiquette de toutes les images créées)
UIImage *tmpImage = [[UIImage imageNamed:[NSString stringWithFormat:@"%i.png", sender.tag]] retain];
UIImageView *myImage = [[UIImageView alloc] initWithImage:tmpImage];
numImages += 1;
myImage.userInteractionEnabled = YES;
myImage.tag = numImages;
myImage.opaque = YES;
[self.view addSubview:myImage];
[myImage release];
J'ai alors d'un touchesBegan méthode qui permet de détecter ce qui est touché. Ce que j'en ai besoin pour faire est de permettre à l'utilisateur de faire glisser l'image nouvellement créées. C'est presque de travail, mais l'image scintille de tous sur la place lorsque vous le faites glisser. Je peux accéder à l'image que vous cliquez sur que je peux l'obtenir de la BALISE, mais je ne peux tout simplement faire glisser gentiment.
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [[event allTouches] anyObject];
CGPoint location = [touch locationInView:touch.view];
if (touch.view.tag > 0) {
touch.view.center = location;
}
NSLog(@"tag=%@", [NSString stringWithFormat:@"%i", touch.view.tag]);
}
- (void) touchesMoved:(NSSet *)touches withEvent: (UIEvent *)event {
[self touchesBegan:touches withEvent:event];
}
Il travaille, que je reçois une sortie de la balise pour chaque image que je clique sur eux. Mais quand je fais glisser, il clignote... des idées?
OriginalL'auteur Matt Facer | 2010-01-02
Vous devez vous connecter pour publier un commentaire.
En réponse à ma propre question - j'ai décidé de créer une classe pour la gestion des images que je place sur la vue.
Code si ça intéresse quelqu'un....
Déplaçable.h
Déplaçable.m
et de l'appeler
merci de poster cela, mais je suis gigue effet en faisant cela, comment peut-il être évité?
merci man! travailler comme un charme 🙂
OriginalL'auteur Matt Facer
En général, vous obtenez un accord implicite de l'animation lorsque vous modifiez
center
. Êtes-vous de jouer avec-contentMode
ou en appelant-setNeedsDisplay
par hasard?Vous pouvez demander explicitement de l'animation afin d'éviter de les supprimer et de re-dessiner de cette façon:
Ne remarque que
NSLog()
peut être très lent (beaucoup plus lent que ce que vous attendez, c'est beaucoup plus compliqué qu'un simpleprintf
), et qui peuvent causer des problèmes dans quelque chose qui s'appelle aussi souvent quetouchesMoved:withEvent:
.BTW, vous perdez de la
tmpImage
.J'ai pensé qu'il pourrait y avoir eu un problème avec la balise.. mais maintenant je pense qu'il pourrait être un problème avec les points de vue. Quand je place l'image en utilisant le premier bout de code, il va de 0,0. Il semble toujours vouloir aller là-bas quand j'faites-le glisser. De sorte que la cause du scintillement. La position actuelle, puis il en train de revenir.... sa me rend fou!
OriginalL'auteur Rob Napier