Shi*_*ara 8 cocoa-touch uiscrollview ios
希望有人可以帮助解决这个问题.我有一个派生自UIScrollView的类,我想阻止用户通过手动捏合和滑动手势进行缩放或滚动.所有视图导航将由编程方式控制,以响应用户点击的位置(想想电子书阅读器,其中点击显示器的左侧或右侧导致视图仅滚动一页宽度).有关如何实现这一点的任何建议?
在你- (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)并在应用程序时暂时禁用手势.处于某种状态.
要防止用户控制器缩放和平移但仍允许滚动视图的编程缩放和平移,最好的方法是-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中.我可以通过简单地将视图边界设置为选定区域来平滑地放大和缩小.我要显示的区域.
我对 s 没有太多经验UIScrollView,但查看文档,看起来您可以设置maximumZoomScale、minimumZoomScale和scrollEnabled来禁用您想要禁用的所有内容。
来自文档:
scrollEnabled:
如果此属性的值为 YES ,则启用滚动,如果为 NO ,则禁用滚动。默认为“是”。
当禁用滚动时,滚动视图不接受触摸事件;它将它们转发到响应者链上。
maximumZoomScale:
该值决定了内容可以缩放的大小。它必须大于要启用缩放的最小缩放比例。默认值为 1.0。
| 归档时间: |
|
| 查看次数: |
5165 次 |
| 最近记录: |