观察滚动视图的“拖动”属性但未收到任何通知

时间:2012-07-13 14:28:23

标签: objective-c cocoa-touch uiscrollview key-value-observing uiscrollviewdelegate

我有一个自定义UIView,该subView被添加为UIScrollView的{​​{1}},我希望只要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 {{中的重新定位逻辑1}}方法(如scrollViewDidScroll事物)。

2 个答案:

答案 0 :(得分:4)

UIKit一般不符合KVO标准。某些属性可能会生成更改通知这一事实并不可靠 - 它没有记录,可能会在将来的版本中发生变化等。

由于您需要重用此重新定位逻辑,为什么不将它正确分开?顺便说一句 - 您可以将它放在自定义视图类中。

答案 1 :(得分:0)

或者您将代理人设置为UIScrollView并实施scrollViewDidScroll: