Я надеюсь, что кто-то сможет помочь мне с проблемой, которая сейчас делает мою голову!
Учитывая следующую иерархию представлений
Я хочу, чтобы иметь возможность обнаруживать жесты салфетки в моем пользовательском UITableViewCell.
Я подклассифицировал UIScrollView и получил метод hitTest: withEvent:, который проверяет, касается ли я касания ячейки таблицы (или ее содержимого) или нет, и в этом случае я устанавливаю следующие свойства просмотра прокрутки:
- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
UIView* result = [super hitTest:point withEvent:event];
if ([result.superview isKindOfClass:[UITableViewCell class]] || [result.superview tag] == SUBVIEW_TAG)
{
self.canCancelContentTouches = NO;
self.delaysContentTouches = YES;
} else {
self.canCancelContentTouches = YES;
self.delaysContentTouches = NO;
}
return result;
}
Я также реализовал:
- (BOOL)touchesShouldCancelInContentView:(UIView *)view
{
if (view.tag == SUBVIEW_TAG || [[view superview] isKindOfClass:[UITableViewCell class]])
return NO;
return YES;
}
И я возвращаю NO, если рассматриваемый вид - это ячейка представления таблицы.
Все эти методы вызывают и выполняют свои действия, как ожидалось, но я все еще не могу остановить UIScrollView от "hogging" жестов салфетки.
Интересно, что если я включаю UIView, который содержит tableview и ячейку для обоих вышеперечисленных методов (тот, у которого есть SUBVIEW_TAG), он работает отлично, поэтому я предполагаю, что это должно быть связано с тем, что UITableView наследует из UIScrollView.
Моя главная цель - пронести по ячейке, чтобы показать больше возможностей для ячейки. Горизонтальное прокручивание в любом месте в этом представлении будет захватываться прокруткой и перемещать содержимое по горизонтали в соответствии с его обычным поведением.
Любые идеи были бы очень оценены!
Спасибо! Рог