я реализовал следующие обработчик событий в моей UIView:touchesEnded иногда не называется
- (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) события. Я всегда получаю события «touchhesBegan» и «touchedMoved».
У меня есть вход в эти методы, поэтому я на 100% уверен, что время от времени я не получаю события «touchhesEnded» (или touchsCancelled), которые я ожидаю.
multiTouch включен.
Кто-нибудь знает, почему это происходит? Крайне важно, чтобы я получал эти события, поскольку я использую эти события для удаления подзаголовков.
Есть ли работа для этого? Можно ли запросить представление (или окно) для текущих касаний?
Было бы лучше, если бы вы показали нам свой * фактический * исходный код, так как он может содержать проблему, которую не имеет ваш поддельный исходный код. –
Обновленный код. Это действительно так просто. BTW: iPhone 4, iOS 5.0.1. Его легче воспроизводить с несколькими касаниями, но это все равно будет происходить изредка одним касанием. – PleaseHelp
Есть ли вообще запрос UIView, UIWindow или иначе для текущих касаний? – PleaseHelp