UILongPressGestureRecognizer на UITableViewCell не работает в iOS 5 и 4.3

У меня есть табличное представление, и я использую UILongPressGestureRecognizer в ячейке табличного представления, чтобы показать контекстное меню над ячейкой, чтобы позволить пользователю выполнять некоторые дополнительные функции. Все хорошо работает в iOS 5.1, но когда я тестирую в iOS 5 и 4.3, событие не запускается.

Кто-нибудь знает, как решить эту проблему, пожалуйста, помогите мне, спасибо заранее.

Ниже мой код:

в tableViewCell.h: добавить UIGestureRecognizerDelegate

в tableViewCell.m

UILongPressGestureRecognizer *longPressRecognizer = [[UILongPressGestureRecognizer alloc] 
                                                     initWithTarget:self action:@selector(handleLongPress:)];
longPressRecognizer.minimumPressDuration = 1.5;
longPressRecognizer.numberOfTouchesRequired = 1;
longPressRecognizer.numberOfTapsRequired = 0;
longPressRecognizer.delegate = self;

[self addGestureRecognizer:longPressRecognizer];
[longPressRecognizer release];

// Метод для обработки события

- (void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer
{    
    if (gestureRecognizer.state == UIGestureRecognizerStateBegan) 
    {
        // Do something.
    }
}

2 ответа

Решение

Потратив 1,5 дня на эту проблему, я обнаружил, что каким-то образом tableView получает долгое нажатие, но tableViewCell нет на iOS 5/4.3 . Поэтому я исправил эту проблему, добавив UILongPressGuestureRecognizer в tableView, затем в обработчике событий длинного нажатия затем вызвал tableViewCell, чтобы показать контекстное меню, и это работает.

Я тоже встречался с этой проблемой. Я обнаружил, что распознаватель жестов при длинном нажатии работает нормально только тогда, когда свойство "делегат" имеет значение "НУЛЬ". Так что просто попробуйте удалить эту строку.

longPressRecognizer.delegate = self;
Другие вопросы по тегам