固定UIScrollView滑动的方向

一般而言,我们通过这两个参数CGRectMake以及contentSize就可以自动的让UIScrollView只往一个方向滚动.但我遇到过非常奇葩的情况,那就是即使设置的CGRectMake以及contentSize没有一点点问题,这个UIScrollView也能够上下左右滚动-_-!!.

为了不依赖于CGRectMake以及contentSize,我们可以通过在代理方法scrollViewDidScroll:中进行限制即可.

没有限制之前的效果:

源码:

//
//  RootViewController.m
//  BUG
//
//  Copyright (c) 2014年 Y.X. All rights reserved.
//

#import "RootViewController.h"

@interface RootViewController ()<UIScrollViewDelegate>

{
    UIScrollView    *_showView;
}

@end

@implementation RootViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIImageView *showImageView =         [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"长图.jpg"]];

    _showView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 50, 320, 100)];
    _showView.delegate = self;
    [_showView addSubview:showImageView];
    _showView.contentSize = showImageView.frame.size;
    [self.view addSubview:_showView];
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGPoint point = scrollView.contentOffset;
//    point.y = 0.f;
    scrollView.contentOffset = point;
}

@end

限制后效果:

//
//  RootViewController.m
//  BUG
//
//  Copyright (c) 2014年 Y.X. All rights reserved.
//

#import "RootViewController.h"

@interface RootViewController ()<UIScrollViewDelegate>

{
    UIScrollView    *_showView;
}

@end

@implementation RootViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIImageView *showImageView =         [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"长图.jpg"]];

    _showView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 50, 320, 100)];
    _showView.delegate = self;
    [_showView addSubview:showImageView];
    _showView.contentSize = showImageView.frame.size;
    [self.view addSubview:_showView];
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGPoint point = scrollView.contentOffset;

    // 限制y轴不动
    point.y = 0.f;

    scrollView.contentOffset = point;
}

@end

核心代码:

固定UIScrollView滑动的方向

时间: 2024-10-01 22:16:30

固定UIScrollView滑动的方向的相关文章

移动端判断手势滑动的方向

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>触屏手指滑动计算演示--程序员老刘</title> </head> <body style="font-size:32px;"> <div style="width:100

移动应用滑动屏幕方向判断解决方案,JS判断手势方向

问题分类 滑动屏幕打开相应功能操作. 问题描述 1.用户手动滑动屏幕,根据滑动的方向,打开相应的功能(如:向上滑摇钱树经验明细,向下滑打开任务明细,向左滑打开聚宝盆物品查看等功能),滑动事件捕获问题. 2.大家都知道,划动都有角度问题,如:向330度方向滑动手机,要计算出它的方向问题. 3.HTML5提供的滑动事件,只能读取到起点和终点坐标,计算角度问题. 4.手机屏幕坐标与标准坐标系转换问题. 解决方案 1.滑动屏幕事件使用HTML5 的touchstart滑动开始事件和touchend滑动结

javascript判断移动应用手势滑动屏幕方向

方案思路: 1.滑动屏幕事件使用HTML5 的 touchstart 滑动开始事件和 touchend 滑动结束事件. 2.方向的判断,以起点做平面坐标系,与终点连线做直线,直线与x正半轴计算角度:我们以45度角为方向分割线,如:只要滑动角度大于等于45度且小于135度,则判断它方向为向上滑. 3.使用Math.atan2()来计算起点与终点形成的直线角度. 4.仔细对比标准坐标系与屏幕坐标系,我们发现,标准坐标系,上半轴为负值,要实现转换,只需要调换Y坐标起点与终于位置即可. 代码实现: [网

关于手机端 手势滑动的方向的判断(方式一)

滑动屏幕    touchstart:接触屏幕时触发,touchmove:活动过程触发,touchend:离开屏幕时触发 首先获取手接触屏幕时的坐标X,Y //获取接触屏幕时的X和Y $('body').bind('touchstart',function(e){ startX = e.originalEvent.changedTouches[0].pageX, startY = e.originalEvent.changedTouches[0].pageY; }); 然后获取滑动的坐标,并使用

根据UIScrollView 滑动获取当前页数

#pragma mark --#pragma mark --  UIScrollViewDelegate- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{        CGFloat pageWidth = mainScrollView.frame.size.width;        int currentPage = floor((mainScrollView.contentOffset.x - pageWidt

UIPanGestureRecognizer判断滑动的方向

.h文件 CGFloat const gestureMinimumTranslation = 20.0 ; typedef enum : NSInteger { kCameraMoveDirectionNone, kCameraMoveDirectionUp, kCameraMoveDirectionDown, kCameraMoveDirectionRight, kCameraMoveDirectionLeft } CameraMoveDirection ; @interface FCDeta

判断tableVIew滑动的方向

首先设置一个旧的偏移量为0; self.oldContent = 0; - (void)scrollViewDidScroll:(UIScrollView *)scrollView { if (scrollView.contentOffset.y > _oldContent) { //如果当前位移大于缓存位移,说明是tableView向下移动 [self foldingViewDidAnimateToFold]; } else { [self foldingViewDidAnimateToFla

用HTML和javascript(JS)计算触屏手机手指滑动方向的演示

移动终端的流行,程序员希望通过HTML+JS完成触屏动作的识别.下面给出具体实现的例子,供大家参考. 将下面的代码复制并保存,用手机访问,现在的手机浏览器一般都支持触屏,针对本演示来讲就是支持三个js事件: 1.touchstart---手指开始触摸事件,此事件可以获取起始坐标,将起始坐标保存在pressX 和pressY 中. 2.touchmove---手机触摸移动时间,只要手机不离开指定元素,就不停的将手机的新坐标通过事件发给页面上的js代码.通过计算此事件获取的当前坐标与起始坐标的差,就

Js判断H5上下滑动方向及滑动到顶部和底部判断

昨天一位做移动端H5开发的同事说,H5滑动方向要实时判断向下还是向上,但判断是否滑动到底部时判断有问题一直没解决,于是就去问度娘,搜了很多资料,大部分有重复,于是根据大家的资料借鉴学习,在大家的基础上写了一个小例子.功能主要时可以实时的判断上下滑动的方向,是否滑动到底部或顶部来做某些事件触发.例子中有使用到其他博客上的内容,如原作者看到请勿怪,如果例子中有错误的请大家指正.如果使用pc端浏览器查看请把浏览器设置为手机浏览器模式. <!DOCTYPE HTML> <html> <