Frage

Wie erkennen wir einen Hahn und halten auf einem UITableViewCell?

War es hilfreich?

Lösung

In iOS 3.2 oder höher können Sie eine href verwenden <= "http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UILongPressGestureRecognizer_Class/Reference/Reference.html" rel = "noreferrer" > UILongPressGestureRecognizer

Andere Tipps

Hier ist der Code direkt aus meiner app angehoben. Sie sollten diese Methoden (und ein boolean _cancelTouches Mitglied) zu einer Klasse, die Sie von UITableViewCell ableiten hinzuzufügen.

-(void) tapNHoldFired {
    self->_cancelTouches = YES;
   // DO WHATEVER YOU LIKE HERE!!!
}
-(void) cancelTapNHold {
    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(tapNHoldFired) object:nil];
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    self->_cancelTouches = NO;
    [super touchesBegan:touches withEvent:event];
    [self performSelector:@selector(tapNHoldFired) withObject:nil afterDelay:.7];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    [self cancelTapNHold];
    if (self->_cancelTouches)
        return;
    [super touchesEnded:touches withEvent:event];
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    [self cancelTapNHold];
    [super touchesMoved:touches withEvent:event];
}

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
    [self cancelTapNHold];
    [super touchesCancelled:touches withEvent:event];
}
//Add  gesture to a method where the view is being created. In this example long tap is added to tile (a subclass of UIView):

    // Add long tap for the main tiles
    UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longTap:)];
    [tile addGestureRecognizer:longPressGesture];
    [longPressGesture release];

-(void) longTap:(UILongPressGestureRecognizer *)gestureRecognizer{
    NSLog(@"gestureRecognizer= %@",gestureRecognizer);
    if ([gestureRecognizer state] == UIGestureRecognizerStateBegan) {
        NSLog(@"longTap began");

    }

}

Sie sollten wahrscheinlich behandeln die UIControlTouchDown Veranstaltung und je nachdem, was Sie mit „halten“, feuert einen NSTimer, dass ein Intervall zählen, da Sie die Berührung ausgelöst und ungültig beim Brennen oder die Berührung Freigabe ( UIControlTouchUpInside und UIControlTouchUpOutside Veranstaltungen). Wenn der Zeitgeber ausgelöst, können Sie Ihre "tap & hold" haben erkannt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top