Странное выделение на пользовательском UITableViewCell - PullRequest
0 голосов
/ 19 августа 2011

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

Итак, я попытался переопределить следующий метод:

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
{
    if (highlighted)
    {
        [self setBackgroundColor:[UIColor orangeColor]];
        [self.optionLabel setTextColor:[UIColor whiteColor]];
    }
    else
    {
        [self setBackgroundColor:[UIColor clearColor]];
        [self.optionLabel setTextColor:[UIColor orangeColor]];
    }

    [super setHighlighted:highlighted animated:animated];
}

Это работает нормально, если я нажимаю и удерживаю на ячейке.Но если я быстро коснусь ячейки, мой UITableView перехватит обратный вызов делегата tableView:didSelectRowAtIndexPath:, и вы не увидите, чтобы какой-либо из моих приведенных выше кодов вступил в силу.

Кто-нибудь знает, что я здесь делаю неправильно?

1 Ответ

1 голос
/ 19 августа 2011

Ну, вы можете справиться со случаем, когда ячейка выделена, а не выделена.Что-то вроде:

    - (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated {
        [super setHighlighted:highlighted animated:animated];
        [self updateCell];
    }

    - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
        [super setSelected:selected animated:animated];
        [self updateCell];
    }

    - (void)updateCell {
        if (self.highlighted || self.selected) {
            [self setBackgroundColor:[UIColor orangeColor]];
            [self.optionLabel setTextColor:[UIColor whiteColor]];
        } else {
            [self setBackgroundColor:[UIColor clearColor]];
            [self.optionLabel setTextColor:[UIColor orangeColor]];
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...