Обнаружение касания & amp; Держите в ячейках UITableView

StackOverflow https://stackoverflow.com/questions/1633397

  •  06-07-2019
  •  | 
  •  

Вопрос

Как мы можем обнаружить сигнал & amp; удерживайте UITableViewCell ?

Это было полезно?

Решение

В iOS 3.2 или более поздней версии вы можете использовать <код> UILongPressGestureRecognizer

Другие советы

Вот код, взятый прямо из моего приложения. Вы должны добавить эти методы (и логический член _cancelTouches) в класс, производный от UITableViewCell.

-(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");

    }

}

Вероятно, вам следует обработать событие UIControlTouchDown и, в зависимости от того, что вы подразумеваете под " держать " ;, запустить NSTimer, который будет считать интервал с момента инициации касания, и сделать его недействительным при срабатывании или отпускании касания. (события UIControlTouchUpInside и UIControlTouchUpOutside ). Когда таймер срабатывает, у вас есть & tap & amp; держать & Quot; обнаружено.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top