2010-09-05 1 views
0

Я надеюсь, что кто-то может помочь ... Этот вопрос обсуждался здесь, и я пробовал предлагаемые решения, но безрезультатно.ViewController, смещенный вертикально на 20 пикселей после того, как модальный уволен: iOS4 Only. Пример кода включен

Моя проблема лучше всего проиллюстрировать на примере проекта, который можно скачать с этого URL:

http://www.hitsalive.com/tmp/VCTest.zip

В примере проекта у меня есть главный UIViewController с двумя кнопками используются для вызова двух других UIViewControllers - один использует presentModalViewController, а другой - с помощью «addSubView» (с использованием AppDelegate). Индивидуально обе кнопки и UIViewController s работают нормально.

Однако, если я сначала вызвать модальное ViewController, а затем отклонить его (используя dismissModalViewControllerAnimated: YES), а затем отобразить второе (addSubView) UIViewController, то все элементы и подвиды во втором UIViewController (например, кнопка в этом примере), получают смещены вниз вертикально на 20 пикселей. И смещение происходит с мгновенной задержкой.

Эта проблема не возникает с SDK 3.2 и ниже - только iOS4.

Любая помощь будет оценена, особенно со ссылкой на примерный проект выше.

+0

Почтовый файл, связанный в этом вопросе, больше не доступен. Это заставляет вопрос больше не использовать никому другому. – Keith

ответ

1

добавить [aViewControllerTwo setWantsFullScreenLayout:YES]; к вашим - (void)flipToViewControllerTwo после ViewControllerTwo *aViewControllerTwo = [[ViewControllerTwo alloc] initWithNibName:@"ViewControllerTwo" bundle:[NSBundle mainBundle]];

+0

Спасибо GameBit. Это работает, но с этим решением вы получаете странные артефакты так же, как отображается диспетчер представлений - текст в кнопке «Dismiss» слегка смещается после просмотра viewcontroller, а текст в контроллере TextView изначально (на мгновение) отображается как черная точка в верхнем левом углу. – declan

1

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

shiftedViewController* ShiftedViewController = [[ShiftedViewController alloc] init ]; 

CGRect theFrame = [shiftedViewController.view frame]; 
theFrame.origin.y = 20; 
theFrame.origin.x=0; 
[shiftedViewController.view setFrame: theFrame]; 



[self presentModalViewController:shiftedViewController   
        animated:YES];