Как определить, что ячейка выбрана, но не нажата в UITableViewController - PullRequest
3 голосов
/ 03 ноября 2011

enter image description here

У меня есть два дизайна для UITableViewCells, один для выбранных ячеек и другой для невыбранных ячеек. Я могу обнаружить, что в этих событиях была выбрана и отменена выделение ячейки, чтобы изменить их дизайн:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath

Но когда пользователь касается и удерживает ячейку, ячейка подсвечивается, но ни одно из этих событий не активируется, поэтому я не могу правильно перекрасить тени UITextLabels, потому что у UITitleLabels есть метод: titleLabel.highlightedTextColor, но не метод titleLabel .highlightedShadowColor.

На изображении:

1 - Unselected cell
2 - Selected cell
3 - Tap & hold cell, with ugly shadows.

Как я могу обнаружить, что пользователь касается и удерживает ячейку?

1 Ответ

7 голосов
/ 03 ноября 2011

Вы можете использовать UILongPressGestureRecognizer так:

добавить жест в ячейку в cellForRowAtIndexPath:

UILongPressGestureRecognizer *twoSecPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handlePress:)];
            [twoSecPress setMinimumPressDuration:2];
            [cell addGestureRecognizer: twoSecPress];
            [twoSecPress release];

ручка селектора

-(void) handlePress:(UILongPressGestureRecognizer *)recognizer {
 if (recognizer.state == UIGestureRecognizerStateBegan) {
        UITableViewCell *cellView=(UITableViewCell *)recognizer.view;
        //do your stuff
    }
}

(не тестировался).

...