Я не уверен, как именно вызвать два события touchesBegan
одновременно для двух разных представлений, но вы, вероятно, хотите переопределить метод hitTest:withEvent:
для UIView
.Это позволит вам отследить событие касания в представлении под UIButton
до того, как перейдет к кнопке (hitTests работает от window
вверх до переднего вида).
- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
if (passToSubviews)
{
return [super hitTest: point withEvent: event];
}
// otherwise stop the subview receiving touches
if ([super hitTest: point withEvent: event])
{
return self;
}
return nil;
}
Может быть, это может помочь ...
РЕДАКТИРОВАТЬ:
Просто предположение, но вы можете попробовать:
- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
UIView* hitSubview = [super hitTest: point withEvent: event];
if (hitSubview)
{
[self doTouchedInStuff];
return hitSubview;
}
return self;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self doTouchedInStuff];
[super touchesBegan:touches withEvent:event];
}