有人可以建议如何在iOS4中放大时禁用滚动吗?
我有一个可以在iOS3上运行的实用程序,我通过覆盖内容视图中的setTransform
方法来禁用缩放期间的滚动,例如:
- (void)setTransform:(CGAffineTransform)newValue;
{
[(UIScrollView*)self.superview setScrollEnabled:NO];
[super setTransform:newValue];
}
但是在iOS4中这个技巧不起作用。
非常感谢提前。
答案 0 :(得分: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];
}
答案 1 :(得分:0)
尝试了乔治的方法,因为它似乎可行,但没有运气。检查了文档,并说它“当滚动被禁用时,滚动视图不接受触摸事件;它将它们转发到响应者链。”所以这不起作用,因为我们正在接收缩放触摸事件。所以我尝试了以下内容并且有效......
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view
{
peggedContentOffset = scrollView.contentOffset;
}
- (void) scrollViewDidZoom:(UIScrollView *)scrollView
{
scrollView.contentOffset = peggedContentOffset;
}
这可以通过在缩放开始时抓取contentOffset并在我们缩放时不断重置它来实现。我确信更多花哨的代码可以将缩放集中在缩放点上,而这只是锁定了桌面视图的顶部......但是它可以完成工作。