6

我有一个自定义UIView添加到 a subViewof aUIScrollView中,并且我希望在滚动UIView时自动重新定位。UIScrollView除了观察UIScrollView's contentOffset属性(工作正常),我还需要观察它的dragging属性:

[scrollView addObserver:self 
             forKeyPath:@"dragging" 
                options:NSKeyValueObservingOptionNew 
                context:NULL];

但是在observeValueForKeyPath:ofObject:change:context方法中,我没有收到任何NSNotification更改dragging属性的信息,这是什么问题?谢谢。

更新

由于我要UIView在多个中重用这个自定义UIViewControllers,我希望自定义视图本身处理重新定位逻辑,而不是在每个UIViewController's UIScrollViewDelegate方法中复制重新定位逻辑(就像scrollViewDidScroll事情一样)。

4

2 回答 2

4

UIKit 通常不兼容 KVO。某些属性可能会生成更改通知这一事实是不可靠的——它没有记录在案,并且可能在未来的版本中发生变化等。

既然你需要重用这个重定位逻辑,为什么不把它分开呢?顺便说一句 - 您可以将它放在您的自定义视图类本身中。

于 2012-07-13T14:43:40.280 回答
0

或者你设置一个委托给你 UIScrollView 并实现scrollViewDidScroll:

于 2012-07-13T14:30:35.937 回答