Мне не удается заставить UIView
реагировать на несколько касаний так, как я хочу. В основном некоторые UITouch
находятся в UITouchPhaseBegan
, но никогда не добираются до UITouchPhaseEnded
или UITouchPhaseCancelled
. Вот код, который я использую для обработки касаний, который вызывается из touchesBegan:withEvent
, touchesMoved:withEvent
, touchesEnded:withEvent
и touchesCancelled:withEvent
. Если я опускаю один палец, затем другой, двигаю ими и одновременно отпускаю, то вывод NSLog
иногда Начался! Начал! Завершено! а не Начало! Начал! Закончилось! Завершено!. Эти штрихи куда-то теряются? Как я могу следить за ними?
- (void) handleTouchEvent:(UIEvent *)event {
for( UITouch* touch in [event allTouches] ) {
if( touch.phase == UITouchPhaseBegan ) {
NSLog(@"Began!");
if( ![m_pCurrentTouches containsObject:touch] )
[m_pCurrentTouches addObject:touch];
uint iVoice= [m_pCurrentTouches indexOfObject:touch];
CGPoint location = [touch locationInView:self];
m_pTouchPad->SetTouchPoint( location.x, location.y, iVoice );
m_pTouchPad->SetIsTouching( true, iVoice );
}
else if( touch.phase == UITouchPhaseMoved ) {
uint index= [m_pCurrentTouches indexOfObject:touch];
CGPoint location = [touch locationInView:self];
m_pTouchPad->SetTouchPoint( location.x, location.y, index );
}
else if( touch.phase == UITouchPhaseEnded || touch.phase == UITouchPhaseCancelled ) {
uint index= [m_pCurrentTouches indexOfObject:touch];
[m_pCurrentTouches removeObject:touch];
NSLog(@"Ended!");
m_pTouchPad->SetIsTouching( false, index );
}
}
}
ИЗМЕНИТЬ:
Я предлагаю награду, потому что мне действительно нужно хорошее решение этой проблемы. Подводя итог: мне нужна система, в которой каждое касание, которое начинается, также заканчивается, поэтому, если пользователь опускает один палец, а затем другой в другом месте, я могу видеть, как начинаются оба касания, и к тому времени, когда пальцы исчезнут в контакте с устройством больше, я видел, как оба прикосновения заканчиваются.
Я придерживаюсь неправильной стратегии для достижения этого?
[event allTouches]
вместоtouches
, перешедшего отtouchesBegan:withEvent
? - person Bryan Chen   schedule 10.01.2012