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;