У меня есть следующее 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
.
Знаете ли вы, почему это происходит во второй раз?