Я использую UIPanGestureRecognizer для распознавания горизонтального скольжения в UITableView (в ячейке, если быть точным, хотя он добавлен к самой таблице). Однако этот распознаватель жестов, очевидно, крадет штрихи со стола. Я уже получил признак pangesturer для распознавания горизонтального скольжения, а затем привязался к этому; но если пользователь начинает с разворота по вертикали, он должен передавать все события от этого касания к таблице.
Одна вещь, которую я пробовал, - это отключение распознавателя, но тогда она не будет прокручиваться до следующего события касания. Поэтому мне нужно было передать это событие сразу.
Еще одна вещь, которую я пробовал, заключалась в том, чтобы заставить ее прокручивать себя, но тогда вы будете пропустить постоянную скорость после остановки прикосновения.
Вот какой код:
//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 panning vertically
}
}
Итак, какие-либо советы о том, как передать прикосновения?
Дополнение: Я также подумал, что, возможно, подкласс метода распознавания жестов tableview, чтобы сначала проверить, является ли он горизонтальным; Однако тогда мне понадобится исходный код, я полагаю... Не знаю, будет ли у Apple проблемы с ним. Кроме того: я не подклассифицировал UITableView (контроллер), а только ячейки. Этот код находится в viewcontroller, который содержит таблицу;)