прекратить вызывать метод, сгенерированный beginGeneratingDeviceOrientationNotifications - PullRequest
0 голосов
/ 06 сентября 2011

Допустим, я нахожусь в файле nib someNib.xib.для того, чтобы я мог сказать, изменилась ли ориентация устройства, я помещаю это в представление «загрузил»:,Мой метод deviceOrientationChanged выглядит следующим образом:

-(void) deviceOrientationChanged{

    if(self.view.frame.size.width<800)
    { 
      //means device is on portrait mode
    } else {

       //means device is on landscape mode
    }


}

, поэтому все отлично работает с этим nib-файлом.проблема возникает, когда я загружаю другой nib-файл как:

            // release allocated variables
            // VCHome is the name of the nib file
            VCHome *control = [VCHome alloc];
            [control initWithNibName:@"VCHome" bundle:nil];
            UINavigationController *navControl = [[UINavigationController alloc] initWithRootViewController:control];
            [self presentModalViewController:navControl animated:YES];
            [navControl setNavigationBarHidden:YES];
            [control release];
            [navControl release];

, пока все не заработает.Сейчас я нахожусь в новом файле пера, и я могу взаимодействовать с VCHome.

Почему при использовании файла пера VCHome и повороте устройства вызывается метод deviceOrientationChanged?когда я загружаю файл пера VCHome, я должен выпустить someNib ​​(последний пиб), чтобы этот метод не вызывался.Я больше не планирую использовать someNib ​​и хотел бы, чтобы мое перо VCHome работало так, как если бы я никогда не загружал someNib.

1 Ответ

3 голосов
/ 07 сентября 2011

UIViewController имеет несколько методов, которые вы можете реализовать, которые обрабатывают жизненный цикл изменения ориентации для вас:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

-(void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

и т. Д.

Если вы используете простые UIViewControllers, лучше всего использоватьэти методы вместо регистрации на событие.

Кроме того, если вам нужно проверить, является ли устройство ориентацией по горизонтали или по горизонтали, его лучше использовать:

UIInterfaceOrientation currentOrientation = [[UIApplication sharedApplication] statusBarOrientation];
if (UIInterfaceOrientationIsLandscape(currentOrientation))
{
   ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...