iPhone SDK: TouchEvents
Ein wesentliches Merkmal des iPhone ist seine Multi-Touch Oberfläche. Dieses Feature bietet zum Beispiel die Möglichkeit, Bilder mittels auseinanderbewegen zweier auf dem Display positionierter Finger, zu vergrößern bzw. beim zusammenziehen zu verkleinern.
Hier mal ein kleines Objective-C Snippet für euch, mit dem ihr Fingerbewegungen auf dem Display verfolgen könnt.
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
NSSet *myTouch = [event allTouches];
UITouch *touch = [[myTouch allObjects] objectAtIndex:0];
CGPoint loc = [touch locationInView:self.view];
// X Position = loc.x
// Y Position = loc.y
}
Erläuterung
Wenn ihr diese Funktion in der *.m Datei eures Controllers definiert habt, könnt ihr auf Alle ToucheEvents
die in diesem View auftreten reagieren.
Mit “NSSet *myTouch = [event allTouches];” ladet ihr alle Touches in ein NSSet und holt euch in der nächsten Zeile das erste Event aus diesem Set “UITouch *touch = [[myTouch allObjects] objectAtIndex:0];”.
Mit “CGPoint loc = [touch locationInView:self.view];” holt ihr euch dann die aktuellen X/Y-Koordinaten des ersten Fingers.
Wenn ihr z.b. nur TouchEvents innerhalb eines UIImageView haben wollt, müsst ihr den Parameter der Klassenfunktion “locationInView” entsprechend auf euren ImageView anpassen. Also z.b. so:
CGPoint loc = [touch locationInView:deinImageView.imageView];
Bei einem ImageView sei folgendes gesagt: Wenn der UIImageView nicht die komplette Breite/Höhe des Views ausfüllt, bekommt ihr entweder für X und Y oder nur für einen Wert einen Negativwert als Position des Fingers. So wisst ihr, das der Finger außerhalb des Bildes ist. Innerhalb des UIImageViews habt ihr Positivwerte, die bei Position X:0/Y:0 des Bildes beginnen (Ecke oben links).