Horizontales Verschieben in UITableView erkennen

Ich bin mit einem UIPanGestureRecognizer zu erkennen, horizontal verschiebbar in einem UITableView (auf eine Zelle, um genau zu sein, aber es wird Hinzugefügt, um die Tabelle selbst). Jedoch, diese gestik-Erkennung natürlich Stiehlt das berührt vom Tisch. Ich hab schon den pangesturerecognizer zu erkennen, horizontal schieben und dann einrasten; aber wenn der Benutzer beginnt, durch verschieben der vertikalen, sollte es passieren alle Ereignisse aus, berühren Sie, um die tableview.

Eine Sache, die ich versucht habe, war das deaktivieren der Erkennung, aber dann würde es nicht scrollen, bis die nächste touch-event. Also ich bräuchte es zum bestehen der Veranstaltung sofort dann.

Andere Sache, die ich versucht war, so dass es scroll mich, aber dann entgehen einem die beständige Geschwindigkeit nach absetzen der touch.

Heres einige code:

//In the viewdidload method
UIPanGestureRecognizer *slideRecognizer = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(sliding:)];
[myTable addGestureRecognizer:slideRecognizer];



-(void)sliding:(UIPanGestureRecognizer *)recognizer
{
    if (recognizer.state == UIGestureRecognizerStateBegan)
    {
    CGPoint translation = [recognizer translationInView:favoritesTable];
    if (sqrt(translation.x*translation.x)/sqrt(translation.y*translation.y)>1) {
        horizontalScrolling = YES; //BOOL declared in the header file
        NSLog(@"horizontal");
        //And some code to determine what cell is being scrolled:
        CGPoint slideLocation = [recognizer locationInView:myTable];
        slidingCell = [myTable indexPathForRowAtPoint:slideLocation];
        if (slidingCell.row == 0) {
            slidingCell = nil;
        }

    }
    else
    {
        NSLog(@"cancel");
    }

    if (recognizer.state == UIGestureRecognizerStateEnded || recognizer.state == UIGestureRecognizerStateCancelled)
    {
    horizontalScrolling = NO;
    }


    if (horizontalScrolling)
    {
        //Perform some code
    }
    else
    {
    //Maybe pass the touch from here; It's panning vertically
    }

}

Also, irgendwelche Tipps, gewusst wie: übergeben Sie das berührt?

Zusatz: ich dachte auch, vielleicht Unterklasse der tableview - gesture recognizer-Methode, zuerst prüfen, ob es horizontal, Aber dann bräuchte ich die original-code, nehme ich an... Keine Ahnung, ob Apple Probleme haben wird.
Auch: ich habe keine Unterklasse der UITableView(controller), nur die Zellen. Dieser code ist in der viewcontroller enthält die Tabelle 😉

InformationsquelleAutor der Frage Erik S | 2011-03-24

Schreibe einen Kommentar