Пользовательское подпредставление UIViewController не вращается, но суперпредставление делает, помогите мне разобраться почему? - PullRequest
0 голосов
/ 11 августа 2010

Простое приложение для iPad.

Приложение загружает и отображает UITableView, управляемый подклассом UIViewController.Это работает и прекрасно вращается.

Щелчок по строке в табличном представлении приводит к созданию нового подпредставления, также управляемого подклассом UIViewController.Это прекрасно отображается в портретной ориентации, но не корректируется в горизонтальной ориентации и не реагирует на вращение устройства.

Оба контроллера представления включены:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    NSLog(@"Responding to rotation");
    return YES;
}

Однако только оригинальный контроллер представления реагирует наэто:

   - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    NSLog(@"View About to rotate");
}

В IB я проверил, что представление будет автоматически изменять размеры и компоненты в нем (UIScrollView и некоторые UILabels) будут корректно корректироваться.

Может кто-нибудь помочь мне в разработкепочему подпредставление не отвечает .?

Ответы [ 2 ]

5 голосов
/ 12 августа 2010

Я нашел ответ от моего друга ...

Я добавлял подпредставление в представление, используя

[mainView.view.window addSubview detailView.view];

Однако это добавляло его в окно, а неview и поскольку окно передает только события поворота одному контроллеру view, я поместил свое подпредставление не в то место.Вместо этого я изменяю это на ...

[mainView.view addSubview detailView.view];

Что работает!Просто нужно добавить код для изменения размера подпредставления при вращении, и все готово.

Смотрите здесь для получения дополнительной информации: http://developer.apple.com/iphone/library/qa/qa2010/qa1688.html

0 голосов
/ 11 августа 2010

Не уверен, но AFAIK одновременно активен только один UIViewController (с точки зрения получения событий от UIKit). Ваш второй контроллер представления выдвинут через -presentModalViewController: animated:? Если нет, вам может понадобиться прокси-метод -willRotateToInterfaceOrientation: (и, возможно, другие) от того, который получает события, к другому.

...