Я заполняю UITableView ячейками, содержащими подпредставление UIImageView.Я хотел бы обнаружить прикосновения к представлению изображения, поэтому я также добавляю распознаватель жестов к нему.Тем не менее, ничто не вызывается.Вот мой код:
UIImageView *delete = [[UIImageView alloc] initWithFrame:CGRectMake(1.0, 8.0, 33.0, 33.0)];
delete.image = [UIImage imageNamed:@"Delete.png"];
delete.userInteractionEnabled = YES;
delete.contentMode = UIViewContentModeCenter;
UIGestureRecognizer *gesture = [[UIGestureRecognizer alloc] initWithTarget:self action:@selector(deleteTapped)];
gesture.delegate = self;
[delete addGestureRecognizer:gesture];
[self.cellView addSubview:delete];
Примечание. Технически я добавляю представление изображения в контейнер, который затем добавляется в саму ячейку, следовательно, [self.cellView addSubview:delete]
.Но у меня были те же результаты, когда я добавлял изображение в ячейку напрямую.
Согласно этому ответу на аналогичный пост, это известная ошибка в iOS 5.0;решение состоит в том, чтобы переопределить метод делегата, чтобы принудительно запустить распознаватель жестов:
Исправление - переопределить -gestureRecognizerShouldBegin: в делегате распознавателя жестов и вернуть YES.Эта ошибка должна быть исправлена в будущей версии iOS 5.x.Это безопасно только до тех пор, пока вы не используете новый UITableViewCell API копирования / вставки.
Я пробовал это, но метод делегата никогда не вызывался.Я установил свойство delegate
(см. Выше) и реализовал <UIGestureRecognizerDelegate>
следующим образом:
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
NSLog(@"gesture delegate method called");
return YES;
}
У кого-нибудь есть идеи, почему это все еще не будет работать?Или, возможно, что это за ошибка в iOS 5.1?