2016-08-15 1 views
0

私には次のものがあります。traitCollectionDidChangetraitCollectionDidChangeが呼び出されたときにもう一度失敗しています

- (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 horizo​​ntalSizeClass]:unrecognized selector sent to instancepreviousTraitCollectionnilです。

2回目に失敗する理由は分かりますか?

答えて

0

それはエラーはすべて私が作成されたiOSの7

をサポートに関するいくつかの議論をスピンオフ可能性があるだけでなく、私はこれを投稿します。私は、iOS 7をサポートするために、いくつかの早い時点でしようとのviewDidLoadで次のように追加されました:

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

それはパラメータなしで2回呼び出されます、十分に公平であること。

私の計画では、ViewDidLoadでiOSバージョンを探してから、iOSバージョン8に応じてNotificationCenterに追加したり削除したりしていました。これは明らかに動作しません。

私が追加またはtraitCollectionDidChange除外するためにいくつかのマクロを必要とするかもしれないのiOS 7

まあを実行している場合、これが問題だった - のiOS問題にコメントして自由に感じます。

ありがとうございました

関連する問題