willAnimateToRotation не вызывается - PullRequest
0 голосов
/ 23 января 2012

У меня есть следующий код в моем подклассе UIViewController, однако willAnimateROtationToInterface никогда не вызывается. Есть идеи почему?

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return YES;
}

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{

}

UPDATE: Делегат изменения ориентации контроллера представления родителя вызывается, но не этот. Я добавил этот контроллер представления как подпредставление родительского контроллера представления

Родительский контроллер представления - это UINavigationController, поэтому вот как я добавляю подпредставление:

[self.navController.view addSubview:viewController.view];

Ответы [ 2 ]

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

Оказалось, что это была проблема с защитой контроллера представления, то есть UIViewController была вложена в другой пользовательский подкласс UIViewController, который не пересылал уведомления (или не использовал методы удержания iOS5 UIViewController).

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

Есть ли у вас какой-либо из следующих методов в вашем подклассе UIViewController?

- (void)willAnimateFirstHalfOfRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration;
- (void)didAnimateFirstHalfOfRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation;
- (void)willAnimateSecondHalfOfRotationFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation duration:(NSTimeInterval)duration;

Если это так, вы идете по пути из двух частей, и метод из одной части willAnimateRotationToInterfaceOrientation:duration: не будет вызван.

UPDATE: В ответ на обновление xonegirlz выше:

Родительский навигационный контроллер (UINavigationController) ничего не знает о вашем UIViewController - вы связали представления вместе в иерархии представлений, но не контроллеры представления вместе в контроллере иерархия.

Если вы нацелены на iOS 5, вы можете позвонить -[UIViewController addChildViewController:] на UINavigationController, чтобы сообщить об этом ребенку.

Для iOS 4 вам нужно использовать -[UINavigationController pushViewController:animated: или -[UIViewController presentModalViewController:animated:] для установки правильной иерархии контроллера представления.

Если это не вариант, вам нужно создать подкласс родительского контроллера представления и вручную перенаправить методы вращения на ваш дочерний контроллер представления.

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