В моем приложении для 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, но я не знаю, как их получить. Я пытался привести идентификатор к 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 - это удобный класс, который я использую для облегчения наблюдения. Обратите внимание на обратный вызов наблюдателя наблюдающийКонтент_Обладателя: Когда я меняю сигнатуру этого метода с его текущего:
- (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
Не уверен, что мой ход здесь.