2010-12-27 36 views
2

誰かがiOS4をズームインするときにスクロールを無効にする方法をアドバイスできますか?UIScrollView:ズーム時にスクロールを無効にする

- (void)setTransform:(CGAffineTransform)newValue; 
{ 
[(UIScrollView*)self.superview setScrollEnabled:NO]; 
[super setTransform:newValue]; 
} 

が、iOS4をして、このトリックは動作しません: 私はiOS3上で動作し、私は例えば、コンテンツビューにsetTransformメソッドをオーバーライドすることにより、ズーム時のスクロールを無効に有用性を有します。

事前に感謝します。

+1

私は、コンテンツのサイズが、ズームの期間中にスクロールビューのフレームよりも小さく、変換が行われない限り、できないと思います。 (すなわち、ズーム操作によりコンテンツエリアが大きくなり、スクロールビューがスクロールするフレームよりコンテンツエリアが大きくなると、コンテンツエリアは常にフレームより小さくなければなりません)。 – JoePasq

答えて

4

私はあなたがこのようなUIScrollViewDelegate方法のいくつかを使用することができると思う:

- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view //available starting with iOS 3.2 
{ 
    [scrollView setScrollEnabled:FALSE]; 
} 

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale 
{ 
    if(scale == 1) 
     [scrollView setScrollEnabled:TRUE]; 
} 
+0

素晴らしいソリューション..素晴らしいソリューション。ありがとう..:) –

0

は、うまくいくように見えたとしてジョージの方法を試してみましたが、運がなかったです。チェックされたドキュメントとは、「スクロールが無効になっている場合、スクロールビューはタッチイベントを受け付けず、レスポンダチェーンの上にスクロール表示します。これは、ズームタッチイベントを受信して​​いるときには機能しませんでした。だから、これは私たちがズームしている間に私たちのズームが開始され、常に、それをリセットするときcontentOffsetをつかむことによって動作

- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view 
{ 
    peggedContentOffset = scrollView.contentOffset; 
} 

- (void) scrollViewDidZoom:(UIScrollView *)scrollView 
{ 
    scrollView.contentOffset = peggedContentOffset; 
} 

...私は次のことを試してみました、それが働きました。私は確かにもう少し派手なコードがあなたのズームポイントにズームを集中させることができると確信していますが、これは単にテーブルビューのトップをロックします...しかし、それは仕事をします。

関連する問題