2009-10-28 13 views
1

我有這樣子的UIScrollView的:的UIScrollView imageViewDidEndZooming不會被調用

@interface MyScrollView : UIScrollView <UIScrollViewDelegate> 

而且我有那些委託方法

- (void)scrollViewDidEndZooming:(UIScrollView *)aScrollView withView:(UIView *)view atScale(float)aScale{ 
    NSLog(@"zoomed"); 
} 
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)aScrollView{ 
    NSLog(@"willzoom"); 
} 

當我在MyScrollView viewForZoomingInScrollView放大的調用,但scrollViewDidEndZooming不會被調用。

任何想法爲什麼?

+0

你在哪裏以及如何聲明瞭這些委託方法?你在哪裏給他們打電話?如果你聲明自定義的委託方法,你有責任從你的MyScrollView類中調用它們。 – 2009-10-28 21:19:58

+0

對不起...我粘貼了錯誤的代碼。現在它已修復 – Jorge 2009-10-28 21:24:21

+0

scrollViewWillBeginZooming怎麼樣? – guruz 2012-09-06 19:37:51

回答

0

好的,根據下面的評論完全修改了答案。這可能只是另一個錯字,但您的方法簽名缺少最終參數。

相反的:

- (void)scrollViewDidEndZooming:(UIScrollView *)aScrollView withView:(UIView *)view atScale{ 
    NSLog(@"zoomed"); 
} 

你應該有:

- (void)scrollViewDidEndZooming:(UIScrollView *)aScrollView withView:(UIView *)view atScale:(float)aScale{ 
    NSLog(@"zoomed"); 
} 
+0

我的錯誤。我剪切並粘貼了錯誤的行。我修復了這個問題 – Jorge 2009-10-28 21:22:21

+0

我的代碼基於那個。爲了簡化問題,我更改了NSLog調用委託內的代碼。結果是一樣的:viewForZoomingInScrollView被調用,但scrollViewDidEndZooming不是 – Jorge 2009-10-29 07:24:53

+0

該死的....你是對的。又一次:-(我有它只是你說我應該但它仍然沒有被調用。 – Jorge 2009-10-29 20:00:03

0

對不起撞線,但它是一個非常重要的問題。您不會說您是在實施單獨的捏手勢識別器還是使用UIScrollView的內置縮放。從我自己的研究中,我發現如果你只是使用UIScrollView來縮放它,就調用viewForZoomingInScrollView來獲得你想放大的視圖。然後調用scrollViewWillBeginZooming,然後放大它重複調用scrollViewDidZoom,並在完成時調用scrollViewDidEndZooming。全部如你所料。但是,如果您實現自己的捏手勢識別器使縮放更平滑或出於任何其他原因,它只會重複調用viewForZoomingInScrollView和scrollViewDidZoom。我認爲這是因爲你已經重寫了調用其他方法的內置縮放功能。

如果您需要更多控制權,請將其放入連接到捏手勢識別器的操作方法。