Я надеюсь, что кто-то сможет помочь мне с проблемой, которая мешает мне в данный момент!
Учитывая следующую иерархию представлений
, я хочу иметь возможность обнаруживать жесты смахивания в моем пользовательском UITableViewCell.
Я создал подклассы UIScrollView и у меня есть метод hitTest: withEvent:, который проверяет, касаюсь ли я ячейки tableview (или ее содержимого) или нет, и в этом случае я установил следующие свойства прокрутки:
- (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;
}
И я возвращаю НЕТ в случае, если просматриваемое представление является ячейкой табличного представления.
Все эти методы вызываются и выполняют свои действия, как ожидалось, но я все еще не могу остановить UIScrollView от «перехвата» жеста смахивания.
Интересно то, что если я включу UIView, который содержит табличное представление и ячейку, в оба метода выше (тот, что с SUBVIEW_TAG), он будет работать отлично, поэтому я предполагаю, что это должно быть связано с тем фактом, что UITableView наследует из UIScrollView.
Моя основная цель - провести пальцем по ячейке, чтобы открыть для нее больше возможностей. Горизонтальное смахивание в любом другом месте этого представления будет захвачено представлением прокрутки и сдвинуть содержимое по горизонтали в соответствии с его обычным поведением.
Мы будем очень признательны за любые идеи!
Спасибо! Родж