Я не уверен, является ли это той же самой причиной, что и ваше дело. Но я испытал то же самое. shouldAutorotateToInterfaceOrientation
был вызван только один раз в начале.
После серьезной отладки, разбирая код, я обнаружил, что причина в моем переопределенном методе init.
У меня было это раньше:
- (id)initWithAlbum:(PhotoAlbum *)theAlbum {
if (self) {
self.photoAlbum = theAlbum;
}
return self;
}
А потом я перешел на этот
- (id)initWithAlbum:(PhotoAlbum *)theAlbum {
if (self = [super init]) {
self.photoAlbum = theAlbum;
}
return self;
}
Примечание: единственное отличие - я добавил [super init]
для вызова родительского init.
После этого изменения вращение работает хорошо, и каждый раз при повороте экрана вызывается shouldAutorotateToInterfaceOrientation.
Надеюсь, что это поможет.