2011-01-10 8 views
11

Ich habe eine UIButton eingerichtet und eine Aktion in meinem View-Controller wie gewohnt angeschlossen. Nur das allein funktioniert gut.UIButton funktioniert nicht, wenn die Einzelansteuerungsgeste zu superview hinzugefügt wird

Nun, ich habe folgendes meiner Ansicht-Controller hat einen einzigen Hahn einzurichten:

- (void)viewDidLoad { 
[super viewDidLoad]; 
UITapGestureRecognizer * singleTapGesture = [[UITapGestureRecognizer alloc] 
              initWithTarget:self 
              action:@selector(handleSingleTap:)]; 
[self.view addGestureRecognizer:singleTapGesture]; 
[singleTapGesture release]; } 

Nun, ich jedes Mal die Taste tippen sieht es aus wie es angezapft wurde, aber es löst das Gestenerkenner Code anstelle der Tastenaktion.

Wie kann ich es so machen, dass die Schaltfläche funktioniert, wenn ich auf die Schaltfläche tippe und die Tippgeste funktioniert, wenn ich irgendwo anders in der Ansicht tippe?

Antwort

1

Andrew,

Es scheint mir, dass Sie eine Funktion aufrufen wollen, wenn der Benutzer, wo jeder mit Ausnahme der UI-Objekte tippt.

also mein Vorschlag ist, dass eine benutzerdefinierte Schaltfläche der Größe des Bildschirms erstellen (320x460 unter der Annahme, dass die graue Leiste angezeigt wird) legen Sie es zurück von allen Objekten in der IB. Zu diesem Zeitpunkt werden Sie eine UIButton mit fast 0% Deckkraft sehen können.

und von der IB ziehen Sie die Auswahloption der benutzerdefinierten Schaltfläche zu den Dateibesitzern und wählen Sie die Funktion, die Sie anrufen möchten und Sie sind fertig.

Sein einfacher als das, was Sie wurden in Ihrem Code versucht

+0

Vielen Dank für den Vorschlag, aber das klingt eher klugdy. Es scheint mir, dass es zuerst mit den Knöpfen (Subviews) umgehen sollte und dann in die Superview gehen muss, ich bin nur unsicher, warum es das nicht macht oder was ich falsch mache, um es zu tun. – Andrew

8

Hier ist eine einfache Lösung

singleTapGesture.cancelsTouchesInView = NO; 
+2

Großartig. Genau das habe ich gebraucht. –