如何防止手动缩放UIScrollView

Shi*_*ara 8 cocoa-touch uiscrollview ios

希望有人可以帮助解决这个问题.我有一个派生自UIScrollView的类,我想阻止用户通过手动捏合和滑动手势进行缩放或滚动.所有视图导航将由编程方式控制,以响应用户点击的位置(想想电子书阅读器,其中点击显示器的左侧或右侧导致视图仅滚动一页宽度).有关如何实现这一点的任何建议?

Joo*_*ony 9

在你- (void)viewDidLoad;身上你应该能够禁用你想要的任何手势识别器.在这种情况下:

UIPinchGestureRecognizer *pinchRecognizer = self.pinchGestureRecognizer;
pinchRecognizer.enabled = NO;
Run Code Online (Sandbox Code Playgroud)

要么

UIPanGestureRecognizer *panRecognizer = self.scrollView.panGestureRecognizer;
panRecognizer.enabled = NO;
Run Code Online (Sandbox Code Playgroud)

我有时会从包含UIScrollViews的视图控制器执行此操作.我只是定位滚动视图(self.scrollView.pinchGestureRecognizer)并在应用程序时暂时禁用手势.处于某种状态.

  • "UIPinchGestureRecognizer"似乎通过设置缩放比例在内部启用.在以编程方式设置它们之后禁用它*. (4认同)

Shi*_*ara 7

要防止用户控制器缩放和平移但仍允许滚动视图的编程缩放和平移,最好的方法是-addGestureRecognizer:在子类中覆盖UIScrollView的方法.在我的使用中,我想阻止所有识别器并完全从我的视图控制器控制可视区域,我这样做:

-(void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer {
    //Prevent any of the default panning and zooming controls from working
    gestureRecognizer.enabled = NO;
    [super addGestureRecognizer:gestureRecognizer];
}
Run Code Online (Sandbox Code Playgroud)

每个手势识别器都被禁用,为了更好的控制(允许平移控制,但只允许通过双击进行缩放),您只需检查传入的手势识别器,-isKindOfClass:并根据需要禁用.

-(void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer {
    //Prevent zooming but not panning
    if ([gestureRecognizer isKindOfClass:[UIPinchGestureRecognizer class]]) {
        gestureRecognizer.enabled = NO;
    }
    [super addGestureRecognizer:gestureRecognizer];
}
Run Code Online (Sandbox Code Playgroud)

我在漫画阅读应用程序中使用此方法,该应用程序使用导航导航在页面上的裁剪面板之间制作动画,整个页面包含在UIScrollView中.我可以通过简单地将视图边界设置为选定区域来平滑地放大和缩小.我要显示的区域.


don*_*kim 1

我对 s 没有太多经验UIScrollView,但查看文档,看起来您可以设置maximumZoomScaleminimumZoomScalescrollEnabled来禁用您想要禁用的所有内容。

以下是文档:http://developer.apple.com/library/ios/#documentation/uikit/reference/UIScrollView_Class/Reference/UIScrollView.html

来自文档:

scrollEnabled:

如果此属性的值为 YES ,则启用滚动,如果为 NO ,则禁用滚动。默认为“是”。

当禁用滚动时,滚动视图不接受触摸事件;它将它们转发到响应者链上。

maximumZoomScale:

该值决定了内容可以缩放的大小。它必须大于要启用缩放的最小缩放比例。默认值为 1.0。