2016-08-15 3 views
0

У меня есть следующее traitCollectionDidChange.traitCollectionDidChange не работает второй раз, это называется

- (void) traitCollectionDidChange:(UITraitCollection *)previousTraitCollection{ 
    [super traitCollectionDidChange:previousTraitCollection]; 

    if (previousTraitCollection.horizontalSizeClass != self.traitCollection.horizontalSizeClass){ 
     NSInteger horizontalClass = self.traitCollection.horizontalSizeClass; 
     NSInteger verticalClass = self.traitCollection.verticalSizeClass; 
     switch(horizontalClass){ 
      case UIUserInterfaceSizeClassCompact: 
       if (verticalClass == UIUserInterfaceSizeClassRegular){ 
        // Setup for iPhone 
       } 
       break; 
      case UIUserInterfaceSizeClassRegular: 
       if (verticalClass == UIUserInterfaceSizeClassRegular){ 
        // Setup for iPad 
       } 
       break; 

      default: 
       break; 
     } 
    } 
} 

Update: Это не удается, даже если просто повернув IPad. В любое время, когда метод получает вызов снова, он терпит неудачу: if (previousTraitCollection.horizontalSizeClass != self.traitCollection.horizontalSizeClass){ дает ошибку: [NSConcreteNotification horizontalSizeClass]: unrecognized selector sent to instance. Поскольку previousTraitCollection - nil.

Знаете ли вы, почему это происходит во второй раз?

ответ

0

Ну, я этот пост, как это может закрутить некоторые дискуссии относительно поддерживающей прошивки 7.

Ошибки была все созданным мной. Я пытался на более раннем этапе, чтобы поддержать IOS 7 и добавил следующее в ViewDidLoad:

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(traitCollectionDidChange:) 
              name:UIDeviceOrientationDidChangeNotification object:nil]; 

Это достаточно справедливо, то она будет вызвана без параметров 2 раза.

Мой план состоял в том, чтобы использовать этот подход для поиска версии iOS в ViewDidLoad, а затем добавить или исключить из NotificationCenter в зависимости от версии iOS 8 или нет - видимо, это не сработает.

мне может понадобиться макрос, чтобы добавить или исключить traitCollectionDidChange при работе IOS 7.

Ну, это была проблема - не стесняйтесь комментировать КСН вопрос.

С благодарностью

Смежные вопросы