#objective-c #ios #delegates #rotation
#objective-c #iOS #делегаты #вращение
Вопрос:
в моем приложении у меня есть фоновые функции, которые кэшируют данные — работает нормально. Я реализовал UIView *cacheProgressView; который является визуальной индикацией прогресса механизма кэширования. (он содержит UIProgressBar и тому подобное)
Поскольку я хочу показать это во всех представлениях моего приложения (UINavigation со многими представлениями) Я добавил это в свой делегат, который довольно хорошо об этом заботится
[self.window addSubview:cacheProgressView];
Проблема в том, что когда я поворачиваю устройство, и поскольку cacheProgressView привязан к окну, а не к представлению, я не могу установить его в правильное положение — следующая функция внутри делегата никогда не вызывается:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
NSLog(@"Rotation detected from the delegate");
return YES;
}
как мне решить эту проблему?
Ответ №1:
Вы можете зарегистрироваться для получения уведомлений о ротации…
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didRotate:)
name:@"UIDeviceOrientationDidChangeNotification" object:nil];
- (void) didRotate:(NSNotification *)notification{
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
// do stuff
}