0

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.

Répondre

1

Voir Apple's basic documentation on KVO:

Avec KVO, un objet peut observer les propriétés d'un autre objet

Eh bien, UIScrollView a une propriété contentOffset. Il est donc codage de valeur de clé conforme pour contentOffset. Vous pouvez donc observer les modifications apportées à cette propriété, et c'est ce que vous demandez de faire si vous définissez le chemin de la clé sur contentOffset.

UIScrollView n'a pas de propriété notification, donc sa propriété notification ne peut jamais changer, il n'y a donc rien à observer si vous définissez le chemin de la clé sur notification.

est ici l'explication de mon livre:

http://www.apeth.com/iOSBook/ch13.html#_key_value_observing

+0

il est si propre .. – tranvutuan

Questions connexes