2013-08-09 2 views
-1

Я хочу вызвать функцию в подклассе UIView элемента, добавленного в главное окно, когда устройство вращается.Как я могу вызвать метод в подклассе UIView, каждый раз, когда устройство вращается?

У меня много элементов, поэтому я не хочу вызывать такой метод один за другим, но я хочу, чтобы он автоматически вызывался для этого элемента и всех подзаголовков.

благодаря

+0

Вы можете попробовать 'NSNotificationcenter' – Exploring

ответ

1

Чтобы получить автоматическое поведение подвида, объявить UIView категории, добавив метод, который вы хотите ссылаться. Затем, чтобы ваше мнение подписалось на уведомления о ротации устройства, и как часть обработки уведомления, вызовите тот же самый метод во всех его подзонах. Нечто подобное (набраны без пользы автозамены или скомпилирован, поэтому, пожалуйста, в качестве иллюстрации, а не полный пример программы):

@interface UIView (MyAppAdditions) 

- (void)rotationDetected; 

@end 

@implementation UIView (MyAppAdditions) 

- (void)rotationDetected 
{ 

} 

@end 


@implementation MyView 

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:) name:UIDeviceOrientationDidChangeNotification object:nil]; 
    } 

    return self; 
} 

- (void)didRotate:(NSNotification *)notification 
{ 
    [self rotationDetected]; 
    [self.subviews makeObjectsPerformSelector:@selector(rotationDetected)]; 
} 

@end 

Более гибкая реализация также переопределить initWithCoder: или awakeFromNib подписаться на уведомление о ротации, а также ,

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