iPad / iOS modalView переходит влево при увольнении - PullRequest
0 голосов
/ 20 сентября 2010

Я добавил modalView в свое приложение, все работает нормально, но при закрытии модального окна весь modalView подпрыгивает примерно на 1-2 сантиметра влево, пока он исчезает.

Я не нашел никакой причины для этоготем не менее, вот код, относящийся к модальному:

AppController:

- (void) showNameModal:(Player *)player 
{
    namesModal = [[PlayerModalView alloc] init];
    namesModal.delegate = self;
    namesModal.player = player;

    UINavigationController *navCon = [[UINavigationController alloc] initWithRootViewController:namesModal];

    navCon.modalPresentationStyle = UIModalPresentationFormSheet;
    [self presentModalViewController:navCon animated:YES];

    [navCon release];
    [namesModal release];
 }

 - (void)didDismissModalView 
 {
    [self dismissModalViewControllerAnimated:YES];
 }

ModalView:

 - (void)dismissView:(id)sender 
 {
    [delegate didDismissModalView];
 }

, вызываемый через кнопки навигации, а также через клавиатуру с помощью

  [self dismissView:nil];

Как видите, в этом нет ничего особенного, на самом деле его можно взять из руководства.Что происходит в деталях:

Модал появляется в центре экрана, скользит снизу.по центру все время.я могу обрабатывать некоторые действия в modalView, он остается в центре.

теперь, отклонение вида заставляет его прыгать влево, а не выдвигаться.

Так как это принудительное альбомно-правое приложение (в настоящее время), я смог уведомить только о левом прыжке.

Есть идеи, как убрать этот прыжок?

Спасибо

Ответы [ 4 ]

0 голосов
/ 03 августа 2012

Проблема в том, что UIViewController, который вы показываете модально, не позволяет ориентацию, в которой вы его представляете, поэтому, когда он исчезает, он будет делать это в направлении, которое он считает «разрешенным».

Добавьте это в UIViewController для вас модальное представление:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}
0 голосов
/ 20 сентября 2010

Вы не модально представляете экземпляр PlayerModalView, а скорее UINavigationController. Видимый левый рывок, скорее всего, является анимацией по умолчанию контроллера навигации, пытающегося преобразовать слайд в предыдущее представление (не существующее).

Не похоже, что вам нужен навигационный контроллер для PlayerModalView. Вместо этого вы должны создать для него обычный контроллер вида.

0 голосов
/ 21 января 2011

Похоже, это решение хорошо работает: Контроллер Modal View с клавиатурой на альбомной ориентации iPad меняет местоположение при отклонении

Чтобы упростить отставку первого респондента (если это трудно), вы можете просто позвонить

[self.view endEditing:YES];
[self dismissModalViewControllerAnimated:YES];
0 голосов
/ 20 сентября 2010

Попробуйте,

- (void)didmissView:(id)sender
{
   [self.navigationController didmissModelViewControllerAnimated:YES];
}
...