Handling gesture recognizers in iOS6

Offenbar iOS 6 versucht automatisch, mit der situation umgehen, wenn Sie eine gestik-Erkennung und eine UIButton an der gleichen Stelle, aktiviert wird, für die gleiche Geste.

Diese neue automatische Handhabung löst das Problem, wenn Sie möchten, klicken Sie auf die Schaltfläche anstelle der Aktivierung der gestik-Erkennung, aber ein neues problem erzeugt, wenn Sie wollen, dass die gestik-Erkennung zu handeln.

In iOS 5, die Sie durchführen könnten:

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch

zur übertragung der Aktion auf die UIButton wenn in einem Konflikt.

Diese scheint nicht zu funktionieren in iOS 6. Auch, wobei das Verhalten dieser Methode (da jetzt die UIButton hat die Priorität, anstatt die gestik-Erkennung) funktioniert nicht.


Complete-Methode:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    if ([touch.view isKindOfClass:[UIControl class]]){
        return NO;
    }
    return YES;
}
  • Sie haben eine uigesturerecognizer auf einer uiview, die hat einen uibutton Untersicht und wollen die gestik-Erkennung zu bekommen, berührt, anstatt die button?
  • ja. Eigentlich ist es ein UITableView mit UIButtons innerhalb der Zellen, und ich will, dass die gestik-Erkennung aktiviert werden anstelle der Tasten.
  • Noch nicht iOS gemacht, dieser den ganzen Weg zurück zu seinem Ursprung? Ich hatte schon immer Probleme schlagen, unter die a-Taste.
  • Exakt gleiche Problem mit mir. Wenn ich meine app auf iOS5 und Tippen Sie auf die Schaltfläche Hinzugefügt, über Anzeigen mit tap-Geste Hinzugefügt, die handleTap-Methode aufgerufen wird, während, wenn ich das gleiche app auf iOS6 Gerät handleTap ist nicht immer genannt. Ich habe nicht überschrieben shouldReceiveTouch. Muss ich hinzufügen-Ziel auf UIButton für UIControlEventTouchUpInside speziell für iOS6 ?
  • Ich fügte hinzu, Ziel auf UIButton für UIControlEventTouchUpInside und es löste mein Ziel. Auf iOS6 die target-Selektor aufgerufen wird und auf iOS5 handleTap, von wo ich rufe die gleiche Auswahl.
  • Würde erstellen Sie eine Antwort zur Erklärung dieser fix?
  • Welche Veranstaltung wollen Sie verwenden, um Aktionen auszulösen, die auf die Tasten? Es ist fast immer sein sollte, auf UIControlEventTouchUpInside. Es gibt dem system die chance zu handhaben gesten, und es gibt dem Benutzer die chance zu korrigieren, Tippen Fehler.
  • So deaktivieren Sie die gesture recognizer ich hätte zu verwenden wie... touch down?
  • Es ist nicht ganz klar, aus Ihrer Frage, was ist Ihre genaue Anordnung. Darf ich Fragen, warum brauchen Sie oder warum haben Sie eine gestik-Erkennung und einen UIButton an der gleichen Stelle?? Speziell, wenn Sie nur wollen, die gestik-Erkennung zu erhalten, berührt nicht die Schaltfläche. Konnte Sie nicht loswerden der Knöpfe und lösen Sie Ihr Problem??
  • Dieses Problem ist Agnostiker und nicht spezifisch zu meinem layout.
  • Ja Júlio, ich verstehe, dass ist so. Zur gleichen Zeit war ich mehr daran interessiert zu wissen, warum die Notwendigkeit, einen gestik-Erkennung und einen UIButton in der gleichen Stelle in der app, wenn es Ihnen nichts ausmacht.
  • Ich arbeitete in einer app hatte mehrere Tasten im inneren UITableViewCells, es waren also wie 18 Tasten in den Bildschirm. Jede Schaltfläche öffnet sich ein "popup", dass einige Daten anzeigt, und, wenn Sie auf Tippen Weg von der popup verbergen würde. Ich habe das Problem mit dem ios6, indem ein riesiger lächerlich transparente Schaltfläche in den Rücken.

InformationsquelleAutor jturolla | 2012-09-20
Schreibe einen Kommentar