masterView не всегда правильно показывает / скрывает - PullRequest
0 голосов
/ 12 января 2012

У меня есть splitViewController.Это подробно VC

-(void)viewDidLoad
{
    self.masterIsVisible = YES;
    //a botton in navigation bar to hide or show the master view.
    [button addTarget:self action:@selector(showOrHideMasterView)
    forControlEventsTouchUpInside]
    //gesture control to swipe right or left to slide master view in and out.
    [swiperight addTarget:self action:@selector(showMasterView)];
    [swipLeft addTarget:self action:@selector(hideMasterView)];
}

-(void)showOrHideMasterView
{
if (self.masterIsVisible)
    [self hidemasterView]; self.masterIsVisible = NO;
else
    [self showMasterView]; self.masterIsVisible = YES;
}

-(void)hideMasterView
{
    //hides master view by substracting masterview's width from its origin.x
}

-(void)showMasterView
{
    //shows master View by adding masterview's width to its origin.x
}
- (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:     (UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation
{
    return NO;
}

Все почти работает как задумано.Проблема: в одной ориентации && master НЕ виден .. затем устройство меняет ориентацию .. master View вместо того, чтобы соскользнуть с экрана, толкнул подробный вид в другую сторону.Я знаю это, потому что флаг теперь установлен как masterIsVisible = NO вместо YES.Что я могу сделать, чтобы изменить флаг на ДА при повороте устройства.выглядит тривиально, но, кажется, не может понять.

Я попытался зарегистрироваться для Devicechnagenotification в UIDevice, но это не сработало.BOOL ДА в любой ориентации.Пример Apple использует это, но похоже, что это не правильный подход.

1 Ответ

0 голосов
/ 13 января 2012

Хорошо, я наконец-то понял, как правильно установить флаг для изменения ориентации.Я добавил следующий метод

-(void)willAnimateRotationToInterfaceOrientation:
  (UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
 {
 if (toInterfaceOrientation == UIInterfaceOrientationPortrait)
    self.masterIsVisible = NO;
 else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)
    self.masterIsVisible = YES;
 else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft)
    self.masterIsVisible = YES;
 else if (toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
    self.masterIsVisible = NO;
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...