Захват и остановка распространения пользовательского взаимодействия iOS UITableViewCell
Я делаю некоторые пользовательские рисования UITableViewCell, который я подкласса. Там есть элемент управления OpenGL ES 2.0, который требует взаимодействия с пользователем для работы... теперь, если я начинаю перетаскивать горизонтально, элемент управления отвечает, но как только я иду в вертикальном направлении, он начинает перемещать область просмотра табличного представления. Как мне остановить это взаимодействие от перехода к UITableView и ограничить его собственным UIView в UITableViewCell?
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];
}
Я не думаю, что вы можете предотвратить взаимодействие с пользователем в UITableView, так как это повлияет на все подпредставления.
Я попытаюсь отправить взаимодействие UITableView к методу, который вы хотите использовать.
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
[MyClass myScrollDidStartMethod];
}
или используйте - (void)scrollViewDidScroll:(UIScrollView *)sender, чтобы вы могли работать с contentOffset отправителя, чтобы получить направление прокрутки (см. этот пост для получения дополнительной информации об этом)