Я думаю, вы можете использовать:
– touchesBegan:withEvent:
– touchesMoved:withEvent:
– touchesEnded:withEvent:
– touchesCancelled:withEvent:
в вашем суперпредставлении.
Возможный подход - определить в touchesMoved
, какое подпредставление в данный момент находится «под касанием» (то есть, в каком месте находится касание), и соответственно изменить его статус.
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event allTouches] anyObject];
CGPoint location = [touch locationInView:touch.view];
if(CGRectContainsPoint(subview1.frame, location)) {
...
}
}
touchesBegan
и touchesEnded
не сыграют в этом большой роли; они будут полезны только для начала и завершения «отслеживания», которое вы выполняете в touchesMoved
.
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
NSSet *allTouches = [event allTouches];
<save initial touch if you need it>
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
<do whatever>
}