如何在UIScrollView中禁用垂直滚动(的OBJ-C)(How to disable vert

2019-07-30 20:34发布

我想从我的UIScrollView禁用垂直滚动如果可能的话..我的代码是像下面..做工精细,除了用户可以提前上下滚动不应该在那里我相信..谢谢..

    UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 100, self.view.frame.size.width, self.view.frame.size.height / 3)];   
    scroll.contentSize = CGSizeMake(scroll.contentSize.width,scroll.frame.size.height); 
    scroll.pagingEnabled = YES;
    scroll.backgroundColor = [UIColor blackColor];
    int xVal = 30;

    NSInteger numberOfViews = 5;
    for (int i = 0; i < numberOfViews; i++) {
        UILabel *testLabel1 = [[UILabel alloc] initWithFrame:CGRectMake(xVal, 0, 90, 100)];
        UILabel *testLabel2 = [[UILabel alloc] initWithFrame:CGRectMake(xVal, 20, 90, 100)];
        UILabel *testLabel3 = [[UILabel alloc] initWithFrame:CGRectMake(xVal, 40, 90, 100)];

        testLabel2.backgroundColor = [UIColor clearColor];
        testLabel2.text =@"Test1";
        testLabel2.textColor = [UIColor whiteColor];
        testLabel2.font = [UIFont boldSystemFontOfSize:12];

        testLabel1.backgroundColor = [UIColor clearColor];
        testLabel1.text =@"Test2";
        testLabel1.textColor = [UIColor whiteColor];
        testLabel1.font = [UIFont boldSystemFontOfSize:12];

        testLabel3.backgroundColor = [UIColor clearColor];
        testLabel3.text =@"Test3";
        testLabel3.textColor = [UIColor whiteColor];
        testLabel3.font = [UIFont boldSystemFontOfSize:12];

        xVal += 120;

        UIView *view = [[UIView alloc] initWithFrame:CGRectMake(xVal, 30, 150, 130)];
        view.backgroundColor = [UIColor blackColor];

        xVal += 200;

        [scroll addSubview:testLabel1];
        [scroll addSubview:testLabel2];
        [scroll addSubview:testLabel3];
        [scroll addSubview:view];
    }

    [self.view addSubview:scroll];

Answer 1:

您必须在滚动视图内容高度设置为滚动视图高度

 CGSize scrollableSize = CGSizeMake(scrollableWidth, yourScrollViewHeight); [myScrollView setContentSize:scrollableSize]; 



Answer 2:

在我的情况,我无法获得滚动视图的高度(因自动版式,我是不是能够得到高度viewDidLoad中)。 您可以添加到这个委托方法。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    self.scrollView.contentOffset = CGPointMake(self.scrollView.contentOffset.x, 0);
}


Answer 3:

这可能是一个可能重复

禁用在UIScrollView中垂直滚动

或者你也可以试试这个:

self.scrollview.contentSize = CGSizeMake(self.scrollview.frame.size.width * number_of_items, 1);


Answer 4:

假设它是一个iPhone应用程序,所以屏幕分辨率为320×480。

现在你设置你的滚动视图的身高self.view.frame.size.height / 3 。 在这里你的观点的高度实际上是作为460480没有(为20px为居留制吧)。

所以,当你添加其他视图子视图滚动视图,其框架熄灭滚动的内容画面。 所以,你需要管理这个而设置的帧/内容大小。

让我知道这对你的作品。



Answer 5:

有与简单地改变你的UIScrollView的contentSize没有问题,你是done.Increase其宽度尺寸和高度应该是因为它是在present.Moreover你也可以隐藏垂直滚动条也。

scroll.showsVerticalScrollIndicator = NO;
scroll.contentSize = CGSizeMake(scroll.contentSize.width + xVal,scroll.frame.size.height); 


Answer 6:

你应该这样做:

aScrollView.scrollsToTop = NO;
aScrollView.delegate = self;
aScrollView.contentSize = CGSizeMake(aScrollView.frame.size.width * X, aScrollView.frame.size.height/2);


Answer 7:

在XML文件中有两个属性可用于滚动视图的水平滚动和垂直滚动。 按照您的要求,您可以选中或取消选中,如果你想停止垂直或水平滚动,那么你必须分别进行滚动型的相同内容的大小与高度或滚动视图的宽度



文章来源: How to disable vertical scrolling in UIScrollView (Obj-C)