Я реализовал следующие обработчики событий в моем UIView:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
self.multipleTouchEnabled = YES;
}
return self;
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
NSArray* touchObjects = [[event allTouches] allObjects];
for(int i=0; i<[touchObjects count]; i++)
{
touch = (UITouch*)[touchObjects objectAtIndex:i];
curPoint = [touch locationInView:self];
NSLog([NSString stringWithFormat:@"begin = %f,%f",curPoint.x,curPoint.y]);
}
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
CGPoint curPoint;
for (UITouch *touch in touches)
{
curPoint = [touch locationInView:self];
NSLog([NSString stringWithFormat:@"ended = %f,%f",curPoint.x,curPoint.y]);
}
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
//logging touches
}
-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
//logging touches
}
Проблема в том, что я иногда не получаю события "touchesEnded" (или touchedCancelled). Я всегда получаю события "touchesBegan" и "touchedMoved".
У меня есть методы входа в эти методы, поэтому я уверен на 100%, что иногда не получаю ожидаемых событий "touchesEnded" (или touchesCancelled).
MultiTouch включен.
Кто-нибудь знает, почему это происходит? Чрезвычайно важно, чтобы я получал эти события, поскольку я использую эти события для удаления подпредставления (ей).
Есть ли обходной путь для этого? Можно ли запросить представление (или окно) для текущих касаний?