UITableViewCell состояние выбора фона изменяется до окончания жеста - PullRequest
1 голос
/ 16 июля 2010

CODE

У меня есть код, который добавляет распознаватель жестов UILongPressGestureRecognizer с именем _recognizer к подклассу UITableViewCell с именем cell:

...
UILongPressGestureRecognizer *_recognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(cellLongPressRecognized:)];
_recognizer.allowableMovement = 20;
_recognizer.minimumPressDuration = 1.0f;
[[cell contentView] addGestureRecognizer:_recognizer];
[_recognizer release];
...

Селектор -cellLongPressRecognized: просто записывает в журнал, когда жест заканчивается:

- (void) cellLongPressRecognized:(id)_sender {
    if (((UILongPressGestureRecognizer *)_sender).state == UIGestureRecognizerStateEnded)
        ALog(@"[MyViewController] -cellLongPressRecognized: gesture ended...");
}

Моя консоль отображает одно сообщение журнала, когда я нажимаю, удерживаю и освобождаю ячейку:

[MyViewController] -cellLongPressRecognized: gesture ended...

Пока все хорошо.

ISSUE

Проблема в том, что фон ячейки таблицы остается выбранным только в течение 1,0 секунды, свойство _recognizer.minimumPressDuration.

Если я удерживаю палец на устройстве дольше 1,0 секунды, фон ячейки переходит от стиля выбора UITableViewCellSelectionStyleBlue к обычному непрозрачному невыбранному фону.

ДляУбедитесь, что в этой проблеме используется только код, относящийся к конкретным жестам. Я отключил -tableView:didSelectRowAtIndexPath: во время тестирования.

ВОПРОС

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

1 Ответ

3 голосов
/ 16 июля 2010

Я изменил свое тестовое условие с UIGestureRecognizerStateEnded на UIGestureRecognizerStateBegan, и жест приурочен к изменению состояния выбора ячейки:

- (void) cellLongPressRecognized:(id)_sender {
    if (((UILongPressGestureRecognizer *)_sender).state == UIGestureRecognizerStateBegan)
        ALog(@"[MyViewController] -cellLongPressRecognized: gesture began...");
}

Кажется нелогичным называть событие таким образом, но, похоже, это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...