2013-07-25 7 views
6

Ich erstelle eine zufällige Anzahl von benutzerdefinierten UIViews der gleichen Klasse, und ich füge sie in der Ansicht des UIViewControllers hinzu. Ich Zuweisung ihnen eine UITapGestureRecognizer, aber ich kann nicht die exklusive Note Arbeit erscheinen lassen:Setze exklusive Berührung auf mehrere UIViews der gleichen Klasse

for (int i = 0; i <= n; i++) { 
    ICCatalogProductView *catalogProductView; 
    catalogProductView = [[ICCatalogProductView alloc] init]; 
    [self.view addSubview:catalogProductView] 
    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(testTouch)]; 
    [catalogProductView addGestureRecognizer:tapGesture]; 
    [catalogProductView setExclusiveTouch:YES]; 
} 

Wenn ich die UIViews simultan tippen, wird die Methode zweimal aufgerufen wird (nicht das Verhalten, das ich will). Gibt es eine elegante Methode, um dies oder eine andere Methode zu lösen?

+0

was eigentlich wollen Sie auf simultanen Registerkarte. bitte angeben. – Suryakant

+0

überprüfen Sie dies: -http: //stackoverflow.com/questions/11919624/ios-setting-exclusive-touch-to-all-button-in-view –

+0

Ich möchte nur eine Berührung möglich sein, das gleiche Verhalten Sie hätte, wenn es 2 UIButtons mit .exclusiveTouch = YES gibt –

Antwort

1

aus der Apple-Dokumentation:

exclusiveTouch nur berührt in anderen Ansichten während der Zeit, in verhindert, die in der exklusiven Touch Ansicht eine aktive Note gibt. Das heißt, wenn Sie einen Finger in eine exklusive Touch-Ansicht legen, werden Berührungen in anderen Ansichten nicht gestartet , bis Sie den ersten Finger heben. Es verhindert nicht, dass Berührungen in anderen Ansichten beginnen, wenn derzeit keine Berührungen in der exclusiveTouch-Ansicht vorhanden sind.

wirklich das einzige, was auf dem Bildschirm diese Ansicht zu machen, die berührt erhalten, können Sie entweder brauchen würde, um eine andere Ansicht über die Oberseite der alles zu addieren sonst den Rest der Berührungen zu fangen, oder einen Blick irgendwo Unterklasse in Ihre Hierarchie (oder Ihr UIWindow selbst) und überschreiben hitTest: withEvent: um Ihre Textansicht immer zurück zu zeigen, wenn es sichtbar ist, oder um Nil für Berührungen zurückzugeben, die nicht in Ihrer Textansicht sind.

bedeutet, dass es nur in Ihrer Ansicht exklusiv ist, nicht wenn Sie etwas außerhalb Ihrer Ansicht berühren.

+0

Beide UIViews, die ich berühre, haben exclusivTouch YES gesetzt, gleichzeitiges Berühren ist möglich. –

+0

Wenn Sie eine andere Ansicht als ActivityView berühren, wird activityView verschwinden, und Sie müssen sie mit der Aktivität Ansicht bearbeiten. Gott bewahre, aber wahrscheinlich müssten Sie zwei getrennte Ansichten erstellen. Es hat etwas mit Ersthelfer zu tun. –