在我的 iOS 应用程序中,我正在观察我的 scrollView 子类的 contentOffset 属性的变化。我的观察者处理程序如下所示:
- (void)observeContentOffsetHandler:(id)aContentOffset {
NSLog(@"%@", aContentOffset);
}
为简单起见,我任意选择方法的参数作为id。
我的 NSLog'ging 看起来像这样:
-[MyScrollView observeContentOffsetHandler:] [Line 111] NSPoint: {296, 375}
-[MyScrollView observeContentOffsetHandler:] [Line 111] NSPoint: {296, 389}
-[MyScrollView observeContentOffsetHandler:] [Line 111] NSPoint: {295, 401}
-[MyScrollView observeContentOffsetHandler:] [Line 111] NSPoint: {291, 415}
我需要使用 x 和 y 值,但我不知道如何获取它们。我尝试将 id 转换为 CGPoint,不。我尝试将参数更改为 CGPoint,不。
更新
它变得更深。@mgold 不高兴。这是我设置观察的方式:
self.contentOffsetObserver = [[[Observer alloc] initWithTarget:self action:@selector(observeContentOffsetHandler:)] autorelease];
[self.myScrollViewSubclass addObserver:self.contentOffsetObserver forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:NULL];
Observer 是我用来简化观察的一个方便的类。注意观察者回调observeContentOffsetHandler:。当我从当前更改此方法的签名时:
- (void)observeContentOffsetHandler:(id)aContentOffset
@mgold 对 CGPoint 的建议:
- (void)observeContentOffsetHandler:(CGPoint)aContentOffset
这是不正确的,因为 NSLog 显示的 aContentOffset 全部为零:
-[MyScrollController observeContentOffsetHandler:] [Line 74] aContentOffset 0 0
-[MyScrollController observeContentOffsetHandler:] [Line 74] aContentOffset 0 0
-[MyScrollController observeContentOffsetHandler:] [Line 74] aContentOffset 0 0
-[MyScrollController observeContentOffsetHandler:] [Line 74] aContentOffset 0 0
不知道我在这里的举动是什么。