Kombination von UIGesture-Recognizern

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Kombination von UIGesture-Recognizern

    Hi zusammen,

    ich habe für ein neues Modul unserer App einen View Controller realisiert, welcher per embed-Segue noch einen CollectionViewController beherbergt.

    Darin habe ich wie folgt zwei verschieben. Gesten-Erkenner definiert:

    Quellcode

    1. _selectionRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(selectionHasBeenRecognized:)];
    2. _dragRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(dragDropGestureHasBeenRecognized:)];
    3. [self.view addGestureRecognizer:_selectionRecognizer];
    4. [self.view addGestureRecognizer:_dragRecognizer];
    Bei Erkennung der LongPress-Geste wird, wenn ein UICollectionView-Element getroffen wurde, eine optische Kopie davon per snapshotView erstellt und im View des eigentlichen ViewControllers als Subview hinzugefügt.

    Nun kommt dir aktuelle Krug in der Sache. Wenn ich nun den Finger hebe, wieder ansetze und die Kopie bewegen möchte, klappt es. Wenn ich aber direkt sozusagen aus dem Long-Press heraus den Pan ausführe, passiert nichts.

    Wie muss ich die Gesten-Erkenner konfigurieren, damit dieser flüssige Übergang zwischen den Gesten möglich wird?

    Schönen Gruß
    Daniel
    Man kann alles schaffen. Man muss es nur wollen ;)
    www.regetskcob.github.io
  • Guten Morgen :)

    Mein Problem lässt sich lösen, indem man sich als Delegate für den Recognizer, welcher auf den LongPress folgt, anmeldet und folgende Methode implementiert:

    Quellcode

    1. - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
    2. if ([gestureRecognizer isEqual:_dragRecognizer] && [otherGestureRecognizer isEqual:_selectionRecognizer]) {
    3. return YES;
    4. }
    5. return NO;
    6. }

    So wird definiert, dass der PanRecognizer auch parallel zum LongPress Recognizer agieren darf und so klappt der Übergang dann problemlos :)

    Grüße,
    Daniel
    Man kann alles schaffen. Man muss es nur wollen ;)
    www.regetskcob.github.io