私の 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
CGPointの@mgoldの提案に:
- (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
ここでの私の動きが何であるかわかりません。