Назначение вызывает неожиданные результаты с конкретными настройками iOS - PullRequest
1 голос
/ 31 января 2012

В моем приложении для 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, что противоречит движению к этой диагонали. Есть предложения?

1 Ответ

1 голос
/ 31 января 2012

Является ли устройство устройством ARM6?

В некоторых версиях Xcode есть известная ошибка в генерации кода ARM6, которая вызывает подобные проблемы.Попробуйте включить опцию -mno-thumb в разделе настроек сборки «other c flags» и посмотрите, поможет ли это.Если это так, вы можете условно включить его только для сборок ARM6.

См .: Этот пункт

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...