7

可能であれば、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];
4

7 に答える 7

21

私の状況では、スクロールビューの高さを取得できませんでした (自動レイアウトのため、viewDidLoad で高さを取得できませんでした)。これをデリゲート メソッドに追加できます。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    self.scrollView.contentOffset = CGPointMake(self.scrollView.contentOffset.x, 0);
}
于 2013-07-05T05:08:03.680 に答える
10

スクロールビューのコンテンツの高さをスクロールビューの高さに設定する必要があります

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

于 2012-08-07T11:30:49.783 に答える
4

ここに重複の可能性があります

UIScrollView で垂直スクロールを無効にする

または、これを試すこともできます:

self.scrollview.contentSize = CGSizeMake(self.scrollview.frame.size.width * number_of_items, 1);
于 2012-08-07T11:25:19.920 に答える
1

iPhoneアプリだと仮定すると、画面解像度は320×480です。

これで、スクロール ビューの高さを に設定していますself.view.frame.size.height / 3。ここで、ビューの高さは実際には480ではなく460として取得されます (ステータス バーの場合は 20px)。

したがって、他のビューをサブビューとしてスクロール ビューに追加すると、そのフレームはスクロールのコンテンツ ビューからはみ出します。したがって、フレーム/コンテンツのサイズを設定しながらこれを管理する必要があります。

これがうまくいくかどうか教えてください。

于 2012-08-07T11:35:59.840 に答える
0

UIScrollViewのcontentSizeを変更するだけで問題はありません。幅のサイズと高さを現在の状態に増やす必要があります。さらに、垂直スクローラーを非表示にすることもできます。

scroll.showsVerticalScrollIndicator = NO;
scroll.contentSize = CGSizeMake(scroll.contentSize.width + xVal,scroll.frame.size.height); 
于 2012-08-07T11:37:23.133 に答える
0

次のようにする必要があります。

aScrollView.scrollsToTop = NO;
aScrollView.delegate = self;
aScrollView.contentSize = CGSizeMake(aScrollView.frame.size.width * X, aScrollView.frame.size.height/2);
于 2012-08-16T02:38:42.640 に答える
0

xml ファイルには、スクロールビューで使用できるプロパティが 2 つあります。水平スクロールと垂直スクロールです。要件に応じて、チェックまたはチェックを外すことができます。垂直または水平スクロールを停止する場合は、スクロールビューの高さまたは幅と同じスクロールビューのコンテンツサイズをそれぞれ作成する必要があります

于 2015-10-06T13:32:02.363 に答える