У меня есть 3 UIView, сложенные один поверх другого
UITableview
planeView
{{1 }} rootView
TableView находится вверху, а rootView - внизу. (rootView не виден, так как TableView находится поверх него)
Я реализовал следующий код в rootView
/*code in rootView*/
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {}
, ожидая, что эти функции будут вызываться при касании или перемещении самого верхнего представления, т.е. TableView, но наоборот ни одна из функций не вызывалась.
Я также попытался поместить следующий код в TableView, чтобы вызывались методы rootView
/*code in TableView so that the rootView methods are called(TableView is the subview of rootView)*/
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesBegan:touches withEvent:event];
[self.superview touchesBegan:touches withEvent:event];
}
Как и ожидалось, это произошло, но проблема в том, что делегаты TableView, подобные
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
, не вызываются.
Есть ли способ гарантировать, что делегаты TableView, реализованные в классе TableView (didSelectRow :) и функции touchesBegan:, touchesMoved .. в rootView, также вызываются соответствующим образом?
т.е. TableCell вызываются как функция (didSelectRow: atIndex) в -> TableView, так и метод (touchesBegan и touchesEnd) в -> rootView.