2012-05-28 15 views
4

我有一個名爲subview1的uview。根據特定情況,我將其作爲子視圖添加到其他視圖中。現在,我有以下的代碼iOS:addObserver和superview查詢

[subView1 addObserver:self forKeyPath:@"superview" options:NSKeyValueObservingOptionNew context:nil]; 

我的問題是obserValueForKeypath函數沒有被調用

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ 
if (self.subView1 == (UIView*)object) { 
     if ([keyPath isEqualToString:@"superview"]) { 
      NSLog(@"superview changed %@",change); 

     } 
    } 
} 

我在這裏做得不對。

+0

你可以同時顯示.h和.m文件..? –

+0

根據蘋果的說法: 「該類必須發出該物業的KVO變更通知。」我不確定UIView是否會爲'superview'發出KVO更改通知(即調用'willChangeValueForKey:'和'didChangeValueForKey:')。 – vakio

回答

-1

只要檢查是否進入第一個阻塞,問題可能就在那裏。同時檢查是否聲明瞭您設置觀察者的變量的屬性,如果它在不同的類中。

+0

沒有它dosent甚至輸入塊和是檢查了第二部分。 observerValueForKeyPath只是沒有被調用 – Jefferson