Проблема поворота iOS 6 - нет поворота из представленного контроллера модального представления

Обычными критериями для тестирования белого ящика являются путь выполнения и сенсибилизация структуры данных. Их иногда называют «тестирование филиалов», «тестирование путей», «тестирование потока данных». См. Википедию о тестировании белого ящика.

То есть, unit-test относится к уровню, на котором тест проходит в структуре системы, тогда как тестирование белого и черного ячеек относится к тому, на любом уровне подход к тестированию основан на внутреннем дизайне или только на внешней спецификации устройства.

Итак, если ваш блок-тест сенсибилизирует все пути выполнения и структуры данных в блоке, которые вы тестируют, то это тест с белым ящиком. Однако, если ваш блок не может сенсибилизировать большинство путей и структур данных устройства, он не может претендовать на звание «белого ящика».

Следует иметь в виду, что в некоторых организациях вызывается модульное тестирование white-box, независимо от того, основан ли блок-тест на дизайне устройства, а не на его API. Лучше не спорить с вашим боссом по этому вопросу.

16
задан Mundi 23 September 2012 в 18:41
поделиться

2 ответа

Не поддерживают все ориентации в файле plist приложения, только те, которые поддерживает ваш контроллер корневого представления.

В iOS 6 изменяется авторотация. В iOS 6 метод shouldAutorotateToInterfaceOrientation: UIViewController устарел. Вместо этого вы должны использовать методы supportedInterfaceOrientationsForWindow: и shouldAutorotate:

- (BOOL)shouldAutorotate {
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskAllButUpsideDown;    
}

Модальные ViewControllers больше не получают вызовы ротации в iOS 6: методы willRotateToInterfaceOrientation:duration:, willAnimateRotationToInterfaceOrientation:duration:, и didRotateFromInterfaceOrientation: больше не вызывается ни одним контроллером представления, который создает полноэкранное представление поверх себя, например, те, которые вызываются с помощью: presentViewController:animated:completion:.

Вы можете позволить контроллеру представления, который представляет ваш модальный контроллер представления, сообщать ему о вращении. Кроме того, теперь вы используете: presentViewController:animated:completion: для представления контроллера вида. presentModalViewController:animated: устарело, что вы используете в коде.

26
ответ дан Hannes Sverrisson 23 September 2012 в 18:41
поделиться

Создайте категорию, создав подкласс UINavigationController, и реализуйте следующие методы в файле .h

-(BOOL)shouldAutorotate;
-(NSUInteger)supportedInterfaceOrientations;
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation;



 in .m file

-(BOOL)shouldAutorotate
{
return [self.topViewController shouldAutorotate];
}

-(NSUInteger)supportedInterfaceOrientations
 {
return [self.topViewController supportedInterfaceOrientations];
 }

-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
 {
return [self.topViewController preferredInterfaceOrientationForPresentation];
 } 

и реализуйте следующие методы в классе контроллера представления, класс u, который вы хотите включить вращение

-(NSUInteger)supportedInterfaceOrientations
{
return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft |   UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortraitUpsideDown);
 }


- (BOOL)shouldAutorotate
{
return YES;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
   return UIInterfaceOrientationLandscapeLeft;
}
0
ответ дан Alok SInha 23 September 2012 в 18:41
поделиться