UIImage Erkennung von Tippen und ziehen
Ziemlich Allgemeine Frage, auf die ich ein paar Antworten und ich bin fast da. Ich habe eine Schaltfläche, die, wenn Sie gedrückt wird, ein Bild zu erstellen (code folgt)
(numImages ist auf Last auf NULL und wird als count-up für den tag-Nummern aller Bilder erstellt)
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];
Habe ich dann einen touchesBegan Methode, die erkennt, was Sie angefasst hat. Was ich brauche, es zu tun ist, um dem Benutzer zu ermöglichen, ziehen Sie das neu erstellte Bild. Es ist fast funktioniert, aber das Bild flackert alle über dem Platz, wenn Sie ziehen Sie es. Ich kann auf dem Bild, das Sie klicken Sie auf, wie ich bekommen kann es ist TAG, aber ich kann einfach nicht ziehen Sie es schön.
- (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];
}
Funktioniert es, dass ich eine Ausgabe von die tag für jedes Bild, wie ich auf Sie klicken. Aber wenn ich ziehen, es blinkt... irgendwelche Ideen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Antwort auf meine eigene Frage, - habe ich beschlossen, eine Klasse zu erstellen für den Umgang mit Bildern lege ich auf die anzeigen.
Code, wenn jemand interessiert ist....
Gezogen werden.h
Gezogen werden.m
und nennen es
In der Regel erhalten Sie eine implizite animation beim ändern
center
. Sie sind messing mit-contentMode
oder rufen-setNeedsDisplay
durch Zufall?Können Sie explizit anfordern animation zu vermeiden, die zu löschen und neu zu zeichnen auf diese Weise:
Tun, beachten Sie, dass
NSLog()
kann sehr langsam (viel langsamer, als man erwarten würde, es ist viel komplizierter als eine einfacheprintf
), und das kann Probleme verursachen, in sowas nennt man so oft wietouchesMoved:withEvent:
.BTW, du bist undicht
tmpImage
.