Ответ 1
Вы пытались установить свойство pannings
delegate?
panning.delegate = /* class name with the delegate method in it */;
Вам также нужно будет сопоставить этот класс с UIGestureRecognizerDelegate.
Я подклассифицировал UITableViewCell
, и в этом классе я применяю распознаватель жеста Pan:
UIPanGestureRecognizer *panning = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePanning:)];
panning.minimumNumberOfTouches = 1;
panning.maximumNumberOfTouches = 1;
[self.contentView addGestureRecognizer:panning];
[panning release];
Затем я реализую протокол делегатов, который должен допускать одновременные жесты в представлении таблицы:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
return YES;
}
Затем я помещаю журнал внутри метода handlePanning
только для того, чтобы увидеть, когда он обнаружен:
- (void)handlePanning:(UIPanGestureRecognizer *)sender {
NSLog(@"PAN");
}
Моя проблема в том, что я не могу вертикально прокручивать список ячеек в представлении таблицы и что handlePanning
вызывается независимо от того, в каком направлении я панорамирую.
Я хочу, чтобы handlePanning
вызывался только при горизонтальном панорамировании, а не по вертикали. По достоинству оценят некоторые рекомендации.
Вы пытались установить свойство pannings
delegate?
panning.delegate = /* class name with the delegate method in it */;
Вам также нужно будет сопоставить этот класс с UIGestureRecognizerDelegate.
Разбейте подкласс распознавателя жестов панорамирования и сделайте так, чтобы он распознавал только горизонтальное панорамирование. Существует большое видео WWDC 2010 по вопросу о пользовательских распознавателях жестов. На самом деле есть два на эту тему, проверить их на https://developer.apple.com/videos/archive/:
Добавьте распознаватель жестов в режиме просмотра таблицы. Из этого вы можете получить объект ячейки. Оттуда вы можете управлять функциональностью ячейки. Для каждого жеста будет начатое, измененное, конечное состояние. Итак, сохраните начальную позицию.
CGPoint beginLocation = [gesture locationInView:tblView]; // touch begin state.
CGPoint endLocation = [gesture locationInView:tblView]; // touch end state.
Используя эту точку, вы можете получить IndexPath
NSIndexPath *indexPath = [tblView indexPathForRowAtPoint:beginPoint];
Из этого индексного пути вы можете получить доступ к ячейке.
UITableViewCell *cell = [tableview cellForRowAtIndexPath : indexPath];
Используя этот объект Cell, вы можете его обработать.
Вы пытались установить свойство bounces на NO?