2014-01-05 5 views
0

У меня есть код в моем приложении, который я использую для обнаружения тряски, как только устройство встряхивает фоновое изображение, некоторые элементы на экране скрыты. & некоторые из них не скрыты. Если вы снова встряхнете его, он вернется к исходному экрану ... это отлично работает на симуляторе, но совсем не на моем реальном iPhone 5S!Встряхивание жест работает на симуляторе, но не на iPhone

Если я встряхну iPhone, я вижу, что изменения вспыхивают, но затем он возвращается к исходному виду менее чем за секунду. Вот мой код:

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event 
{ 
if (motion == UIEventSubtypeMotionShake) 
{ 
    UIImage *iPhone5backgroundDO = [UIImage imageNamed:@"image1.png"]; 
    UIImage *iPhone4backgroundDO = [UIImage imageNamed:@"image2.png"]; 
    UIImage *iPhone5background = [UIImage imageNamed:@"image3.png"]; 
    UIImage *iPhone4background = [UIImage imageNamed:@"image4.png"]; 

    if (_backgroundImage.image == iPhone5background) { 
     [UIView animateWithDuration:0.5 animations:^(void) { 
      self.backgroundImage.image = iPhone5backgroundDO; 
      _yearsOut.alpha = 0.0; 
      _yearsLabel.alpha = 0.0; 
      _monthsOut.alpha = 0.0; 
      _monthsLabel.alpha = 0.0; 
      _daysOut.alpha = 0.0; 
      _hoursOut.alpha = 0.0; 
      _minsOut.alpha = 0.0; 
      _secsOut.alpha = 0.0; 
      _daysOnlyOut.alpha = 1.0; 
      _daysLabel.frame = CGRectMake(139, 273, 42, 21); 
      _hoursOutDO.alpha = 1.0; 
      _hoursLabel.frame = CGRectMake(41, 374, 52, 21); 
      _minsOutDO.alpha = 1.0; 
      _minsLabel.frame = CGRectMake(126, 374, 66, 21); 
      _secsOutDO.alpha = 1.0; 
      _secsLabel.frame = CGRectMake(212, 374, 71, 21); 
     }]; 
    } if (_backgroundImage.image == iPhone5backgroundDO) { 
     [UIView animateWithDuration:0.5 animations:^(void) { 
      self.backgroundImage.image = iPhone5background; 
      _yearsOut.alpha = 1.0; 
      _yearsLabel.alpha = 1.0; 
      _monthsOut.alpha = 1.0; 
      _monthsLabel.alpha = 1.0; 
      _daysOut.alpha = 1.0; 
      _hoursOut.alpha = 1.0; 
      _minsOut.alpha = 1.0; 
      _secsOut.alpha = 1.0; 
      _daysOnlyOut.alpha = 0.0; 
      _daysLabel.frame = CGRectMake(226, 331, 42, 21); 
      _hoursOutDO.alpha = 0.0; 
      _hoursLabel.frame = CGRectMake(45, 457, 52, 21); 
      _minsOutDO.alpha = 0.0; 
      _minsLabel.frame = CGRectMake(125, 457, 66, 21); 
      _secsOutDO.alpha = 0.0; 
      _secsLabel.frame = CGRectMake(210, 457, 71, 21); 
     }]; 
    } if (_backgroundImage.image == iPhone4background) { 
     [UIView animateWithDuration:0.5 animations:^(void) { 
      self.backgroundImage.image = iPhone4backgroundDO; 
      _yearsOut.alpha = 0.0; 
      _yearsLabel.alpha = 0.0; 
      _monthsOut.alpha = 0.0; 
      _monthsLabel.alpha = 0.0; 
      _daysOut.alpha = 0.0; 
      _hoursOut.alpha = 0.0; 
      _minsOut.alpha = 0.0; 
      _secsOut.alpha = 0.0; 
      _daysOnlyOut.alpha = 1.0; 
      _daysLabel.frame = CGRectMake(139, 273, 42, 21); 
      _hoursOutDO.alpha = 1.0; 
      _hoursLabel.frame = CGRectMake(43, 374, 52, 21); 
      _minsOutDO.alpha = 1.0; 
      _minsLabel.frame = CGRectMake(127, 374, 66, 21); 
      _secsOutDO.alpha = 1.0; 
      _secsLabel.frame = CGRectMake(213, 374, 71, 21); 
     }]; 
    } else if (_backgroundImage.image == iPhone4backgroundDO) { 
     [UIView animateWithDuration:0.5 animations:^(void) { 
      self.backgroundImage.image = iPhone4background; 
      _yearsOut.alpha = 1.0; 
      _yearsLabel.alpha = 1.0; 
      _monthsOut.alpha = 1.0; 
      _monthsLabel.alpha = 1.0; 
      _daysOut.alpha = 1.0; 
      _hoursOut.alpha = 1.0; 
      _minsOut.alpha = 1.0; 
      _secsOut.alpha = 1.0; 
      _daysOnlyOut.alpha = 0.0; 
      _daysLabel.frame = CGRectMake(212, 271, 45, 21); 
      _hoursOutDO.alpha = 0.0; 
      _hoursLabel.frame = CGRectMake(57, 371, 49, 21); 
      _minsOutDO.alpha = 0.0; 
      _minsLabel.frame = CGRectMake(122, 371, 66, 21); 
      _secsOutDO.alpha = 0.0; 
      _secsLabel.frame = CGRectMake(198, 371, 71, 21); 
     }]; 
    } 
} 
} 

Является ли это проблемой для моего кода? Или я просто пытаюсь сделать что-то, что невозможно?

+0

Хорошо - я бросил пару NSLogs в там при каждом встряске и обнаружении, выработал вопрос, когда утверждение 1-го случая истинно, тогда оператор 2-го раза становится истинным, поэтому запускается сразу же после этого! Поэтому я изменил if's else, если и его отсортировали :) – user2820855

ответ

0

Хорошо. Я бросил пару NSLogs там в каждом встряхивании. & по обнаружению, выработала проблему, когда утверждение 1-го случая истинно, тогда утверждение 2nd if становится истинным, поэтому запускается сразу же после этого! Таким образом, я изменил if's на else, если его & его сортировал - симулятор работал, потому что я использовал 3,5-сим, который уже имел else-if заявление .... мой плохой :(

Смежные вопросы