Захват и прекращение распространения взаимодействия с пользователем iOS UITableViewCell

Я делаю некоторый пользовательский рисунок UITableViewCell, который я подклассифицировал. Там есть элемент управления OpenGL ES 2.0, для работы которого требуется взаимодействие с пользователем ... теперь, если я начинаю перетаскивать по горизонтали, элемент управления реагирует, но как только я иду в вертикальном направлении, он начинает перемещать окно просмотра таблицы. Как остановить это взаимодействие от перехода к UITableView и ограничить его моим собственным UIView в UITableViewCell?


person ExtremeCoder    schedule 05.08.2011    source источник


Ответы (2)


Вы можете попытаться создать подкласс UITableView и переопределить следующие методы.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {  
    UITouch *touch = [touches anyObject];

    // if user tapped on your custom view, disable scroll        
        self.scrollEnabled = NO;
    // end if

    [super touchesBegan:touches withEvent:event];
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    self.scrollEnabled = YES;
    [super touchesEnded:touches withEvent:event];
}

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
    self.scrollEnabled = YES;   
    [super touchesCancelled:touches withEvent:event];
}
person Evgeny Shurakov    schedule 07.08.2011

Я не думаю, что вы можете предотвратить взаимодействие пользователя с UITableView, так как это повлияет на все подпредставления.
Я попытаюсь отправить взаимодействие UITableView тому методу, который вы хотите использовать.

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
   [MyClass myScrollDidStartMethod]; 
}

или используйте - (void)scrollViewDidScroll:(UIScrollView *)sender, чтобы вы могли работать с contentOffset отправителя, чтобы получить направление прокрутки (см. этот пост для получения дополнительной информации об этом)

person pasine    schedule 07.08.2011
comment
Спасибо. Нет необходимости в подклассах. - person Steve Moser; 19.12.2011