Iphone UIScrollView:缩放时禁用滚动
有人能建议在放大iOS4时如何禁用滚动吗? 我有一个在iOS3上工作的实用程序,我通过覆盖内容视图中的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中,这个技巧不起作用 非常感谢。我认为您可
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的顶部。。。但它确实起到了作用。除非在缩放和任何变换过程中,内容大小小于滚动视图的帧,否则我不认为您可以。(即,缩放操作会使内容区域变大,一旦内容区域大于帧,滚动视图就会滚动。因此,内容区域必须始终小于帧。)。。很棒的解决方案。谢谢你,伙计……)