iPhone - Обнаружение затрагивает подпредставление UITableViewCell - PullRequest
3 голосов
/ 17 марта 2012

Я заполняю 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?

1 Ответ

6 голосов
/ 17 марта 2012

попробуйте вернуть YES для этого метода делегата - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer;

и если вы хотите обнаружить действие касания, используйте UITapGestureRecognizer

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