Как правильно наблюдать свойство contentOffset моего подкласса scrollView?

В моем приложении для iOS я наблюдаю за изменениями свойства contentOffset моего подкласса scrollView. Мой обработчик наблюдателя выглядит так:

- (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, нет.

UPDATE

Все глубже. @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

Не уверен, каков здесь мой ход.

6
задан dugla 4 January 2012 в 20:50
поделиться