Обнаружение жестов смахивания на UITableViewCell внутри UIScrollView

Я надеюсь, что кто-то сможет помочь мне с проблемой, которая мешает мне в данный момент!

Учитывая следующую иерархию представлений

enter image description here

, я хочу иметь возможность обнаруживать жесты смахивания в моем пользовательском 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.

Моя основная цель - провести пальцем по ячейке, чтобы открыть для нее больше возможностей. Горизонтальное смахивание в любом другом месте этого представления будет захвачено представлением прокрутки и сдвинуть содержимое по горизонтали в соответствии с его обычным поведением.

Мы будем очень признательны за любые идеи!

Спасибо! Родж

10
задан Rog 28 September 2011 в 09:11
поделиться