0

Ich habe eine UITableView in meiner Klasse mit einer benutzerdefinierten UITableViewCell mit einer UIImageView innen.UIGestureRecognizer Griff berührt in UITableView

ich brauche die Berührung auf dieser UIImageView detektieren eine benutzerdefinierte Methode zu handhaben (handleSingleTouch:) und ich brauche die -didSelectRowAtIndexPath zu rufen, wenn die Zelle ausgewählt ist.

So habe ich eine UIGestureRecognizer meiner TableView auf diese Weise:

UIGestureRecognizer *GEST=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTouch:)]; 

[self.myTable addGestureRecognizer:GEST]; 
GEST.delegate=self; 
[GEST release]; 

[GEST setCancelsTouchesInView:NO]; 
[GEST setDelaysTouchesEnded:NO]; 

Es ist der Konflikt: jedes Mal, wenn die UIImageView die tableview die GestureRecognizer starten Sie das Verfahren berührt wird, sondern auch die didSelectRowAtIndexPath genannt wird.

Jemand kann die gestureRecognizerMethod anrufen ohne die didSelectRowAtIndexPath anrufen?

Antwort

0

Versuchen Sie, den Gestenerkenner dem Bild und nicht der Tabelle hinzuzufügen. Siehe diese Antwort https://stackoverflow.com/a/7760402

+0

dies könnte eine nette und pratic Lösung sein .. aber was ist mit Leistung und Speicher zu sparen, wenn Sie N Elemente zu laden haben ??! –

+0

@Denis - Sorry für die * sehr * späte Antwort. Leistung und Speicher sollten kein Problem sein, da die Ansichten recycelt werden, und daher geschieht diese Einrichtung nur beim ersten Mal (wenn ich mich nicht irre). –

0

Ich kann mir keinen Weg vorstellen, wie Sie das tun können, da Sie in der ganzen Zelle berührungsempfindlich sein müssen. Aber was Sie tun können, ist tag Ihre UIImageView und dann am Anfang von - didSelectRowAtIndexPath, dafür UIImageView und return überprüfen.

+0

tnx für Ihre schnelle Answare! tnx zu dir fand ich eine große Lösung, aber es funktioniert! Jedes Mal, wenn ich die Berührung auf UIImageView mit einem bestimmten Tag feststelle, setze ich einen BOOL isImagePressed auf YES und ich setze die Bedingung if (! IsImagePressed) auf didSelectRowAtIndexPath, um die spezifische Methode zu steuern. –

+0

someOne haben eine sauberere Lösung? –