Я использую UIPanGestureRecognizer для распознавания горизонтального скольжения в UITableView (точнее, в ячейке, хотя она добавляется в саму таблицу). Однако этот распознаватель жестов, очевидно, крадет штрихи со стола. Я уже получил распознаватель pangesture для распознавания горизонтального скольжения и затем привязки к нему; но если пользователь начинает с скольжения по вертикали, он должен передать все события от этого прикосновения к табличному виду.
Одна вещь, которую я попробовал, это отключить распознаватель, но тогда он не будет прокручиваться до следующего события касания. Так что мне нужно, чтобы он сразу прошел.
Еще одна вещь, которую я пытался сделать, это прокручивать себя, но тогда вы потеряете постоянную скорость после остановки касания.
Вот какой-то код:
//In the viewdidload method
UIPanGestureRecognizer *slideRecognizer = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(sliding:)];
[myTable addGestureRecognizer:slideRecognizer];
-(void)sliding:(UIPanGestureRecognizer *)recognizer
{
if (recognizer.state == UIGestureRecognizerStateBegan)
{
CGPoint translation = [recognizer translationInView:favoritesTable];
if (sqrt(translation.x*translation.x)/sqrt(translation.y*translation.y)>1) {
horizontalScrolling = YES; //BOOL declared in the header file
NSLog(@"horizontal");
//And some code to determine what cell is being scrolled:
CGPoint slideLocation = [recognizer locationInView:myTable];
slidingCell = [myTable indexPathForRowAtPoint:slideLocation];
if (slidingCell.row == 0) {
slidingCell = nil;
}
}
else
{
NSLog(@"cancel");
}
if (recognizer.state == UIGestureRecognizerStateEnded || recognizer.state == UIGestureRecognizerStateCancelled)
{
horizontalScrolling = NO;
}
if (horizontalScrolling)
{
//Perform some code
}
else
{
//Maybe pass the touch from here; It's panning vertically
}
}
Итак, есть ли советы о том, как передать прикосновения?
Дополнение: я также подумал, что, возможно, создам подкласс метода распознавания жестов в табличном представлении, чтобы сначала проверить, является ли он горизонтальным; Однако тогда мне понадобится оригинальный код, я полагаю ... Не знаю, возникнут ли у Apple проблемы с ним.
Кроме того: я не делил подкласс UITableView (контроллер), только клетки. Этот код находится в viewcontroller, который содержит таблицу;)