Im enregistrement d'un observateur pour un de ma classe nommée myClassA (sous-classe de uiview) d'une de mes classe nommée UIScrollView (Sample) (une catégorie pour uiscroll view)ne peut pas recevoir de notification de changement, observation de valeur de clé, KVO modèle-IOS
@implementation UIScrollView (myClass)
// Register an observer
- (void)registerAsObserver {
[self addObserver:[self getMyClassA] forKeyPath:@"notification" options:NSKeyValueObservingOptionNew context:nil];
}
Dans myClassA
@implementation myClassA
- (id)initWithFrame:(CGRect)frame {
if(self = [super initWithFrame:frame]) {
// Initialization goes here
}
return self;
}
#pragma mark - Receive notification of change
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context {
CGPoint newPoint = [[change objectForKey:NSKeyValueChangeNewKey] CGPointValue];
if ([keyPath isEqualToString:@"notification"]) {
[self doSomething:newPoint];
}
}
Cependant, il semble que myClassA ne reçoit aucune notification de UIScrollView(myClass)
. Après google, j'ai découvert que la raison est le mot-clé forKeyPath. Si je le change en contentOffset
, tout fonctionne comme le charme. J'ai fait une recherche rapide au here mais je ne comprends toujours pas pourquoi.
il est si propre .. – tranvutuan