Способ, которым я решил эту проблему, не совсем чист, но работает. Пожалуйста, дайте мне знать, если есть лучший способ сделать это.
Я переопределил hitTest
для своего пользовательского UIView
, чтобы он направлял касания к UITableView
внизу. Затем в UITableView
я обрабатываю жесты через touchesBegan
, touchesMoved
и т. Д. Там я также звоню touchesBegan
на UIView
.
Таким образом, касания обрабатываются двумя видами.
Причина, по которой я не поступаю наоборот (имея UIView
s touchesBegan
, вызывающий UITableView
'touchesBegan
), заключается в том, что распознаватели жестов на UITableView
не будут работать.
UIView
подкласс 'hitTest
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
// tview is the UITableView subclass instance
CGPoint tViewHit = [tView convertPoint:point fromView:self];
if ([tView pointInside:tViewHit withEvent:event]) return tView;
return [super hitTest:point withEvent:event];
}
UITableView
подклассов touchesBegan
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:touch.view];
// ....
// view is the UIView's subclass instance
[view touchesBegan:touches withEvent:event];
}