我有一個appDelegate,它有一個myWindow屬性MyWindowClass。我需要從myWindow觀察bool屬性。比我有一個CustomViewController,需要觀察布爾值的變化。 如果我想的addObserver我不繼的ViewController:關於bool屬性的KVO,不能調用observeValueForKeyPath
LayerWindow *w = ((AppDelegate*)[UIApplication sharedApplication].delegate).window;
[w addObserver:self forKeyPath:@"touchInsideLayerWindow" options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld) context:nil];
在視圖控制器我已經定義
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
方法,也是在頭文件。
在WindowClass我有下面的代碼:在視圖控制器
[self setValue:[NSNumber numberWithBool: YES]forKey:@"touchInsideLayerWindow"];
NSLog(@"isTouchInside %@", self.touchInsideLayerWindow ? @"YES" : @"NO");
方法observeValueForKeyPath永遠不會被調用。有誰知道,什麼是錯的? 感謝
嗯,這並沒有什麼變化,因爲基本上和我的代碼基本相同,一般來講都是這樣。 – 2013-02-14 11:14:34
是的,它基本上是一樣的,沒有hCrenge'和'didChange'調用:)。嘗試添加這兩個 – croyneaus4u 2013-02-14 11:19:33