В моем приложении для iOS наблюдается странное поведение. Он отлично работает на симуляторе и на новом оборудовании, но когда я тестирую его с конфигурацией выпуска на iPod Touch более старого поколения (версия программного обеспечения 4.2.1), он не работает должным образом. Это мой код для перетаскивания объекта (подкласс UIView):
- (void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event
{
UITouch *touch = [touches anyObject];
CGPoint touchPoint = [touch locationInView:self.superview];
// Set the correct center when touched
touchPoint.x -= deltaX;
touchPoint.y -= deltaY;
NSLog(@"Touch moved1: %f %f, %f %f", touchPoint.x, touchPoint.y, self.center.x, self.center.y);
self.center = touchPoint;
NSLog(@"Touch moved2: %f %f, %f %f\n", touchPoint.x, touchPoint.y, self.center.x, self.center.y);
}
Это итоговый вывод журнала:
Touch moved1: -43.000000 45.000000, 45.000000 41.000000
Touch moved2: 45.000000 45.000000, 45.000000 41.000000
Touch moved1: -44.000000 45.000000, 45.000000 41.000000
Touch moved2: 45.000000 45.000000, 45.000000 41.000000
Как видите, присвоение self.center = touchPoint
каким-то образом меняет значение touchPoint
. Вместо того, чтобы следовать за пальцем при перетаскивании, значения x и y touchPoint
становятся равными touchPoint.y
, что противоречит движению к этой диагонали. Есть предложения?