Iphone UIScrollView:缩放时禁用滚动

Iphone UIScrollView:缩放时禁用滚动,iphone,uiscrollview,scroll,zooming,Iphone,Uiscrollview,Scroll,Zooming,有人能建议在放大iOS4时如何禁用滚动吗? 我有一个在iOS3上工作的实用程序,我通过覆盖内容视图中的setTransform方法禁用了缩放期间的滚动,例如: - (void)setTransform:(CGAffineTransform)newValue; { [(UIScrollView*)self.superview setScrollEnabled:NO]; [super setTransform:newValue]; } 但是在iOS4中,这个技巧不起作用 非常感谢。我认为您可

有人能建议在放大iOS4时如何禁用滚动吗? 我有一个在iOS3上工作的实用程序,我通过覆盖内容视图中的
setTransform
方法禁用了缩放期间的滚动,例如:

- (void)setTransform:(CGAffineTransform)newValue;
{ 
 [(UIScrollView*)self.superview setScrollEnabled:NO];
 [super setTransform:newValue];
}
但是在iOS4中,这个技巧不起作用


非常感谢。

我认为您可以使用以下一些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];
}

尝试了乔治的方法,因为它似乎是有效的,但没有运气。检查了文档,它说“当滚动被禁用时,滚动视图不接受触摸事件;它将它们转发到响应器链上。”因此,这无法工作,因为我们正在接收缩放触摸事件。所以我尝试了下面的方法,效果很好

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

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

这是通过在缩放开始时抓取contentOffset并在缩放时不断重置它来实现的。我相信一个更花哨的代码可以将缩放集中在您的缩放点上,而这只是锁定了tableview的顶部。。。但它确实起到了作用。

除非在缩放和任何变换过程中,内容大小小于滚动视图的帧,否则我不认为您可以。(即,缩放操作会使内容区域变大,一旦内容区域大于帧,滚动视图就会滚动。因此,内容区域必须始终小于帧。)。。很棒的解决方案。谢谢你,伙计……)