18

垂直方向のデータを表示するUIScrollViewがありますが、水平方向のコンポーネントはiPhoneの画面よりも広くありません。問題は、ユーザーが引き続き水平方向にドラッグでき、基本的にUIの空白のセクションを表示できることです。私は設定を試みました:

scrollView.alwaysBounceHorizontal = NO;
scrollView.directionalLockEnabled = YES;

これは少し役立ちますが、それでもユーザーが水平方向にドラッグできるようになるのを妨げることはありません。確かにこれを簡単に修正する方法はありますか?

4

12 に答える 12

22
scrollView.bounces = NO;

私のために働いた。

于 2014-03-30T21:46:34.267 に答える
16

フレームとコンテンツのサイズがいずれかの次元の画面の境界内にあるスクロール ビューを作成するたびに、スクロール ビューがその方向にスクロール (またはバウンス) しないため、これは奇妙です。

// Should scroll vertically but not horizontally
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
scrollView.contentSize = CGSizeMake(320, 1000);

フレームが画面内に完全に収まり、contentSize の幅がスクロール ビューの幅より大きくないことを確認してください。

于 2008-10-06T16:04:29.270 に答える
9

ストーリーボードスクロールビューで垂直方向にバウンスするためのチェックボックスは、単純に役立ちます...

ここに画像の説明を入力

于 2013-01-19T11:01:19.783 に答える
6

scrollView.bounces を NO に、scrollView.alwaysBounceVertical を YES に設定してみてください。

于 2008-10-06T10:51:09.680 に答える
6

それはSwiftで私にとってうまくいきます:

scrollView.alwaysBounceHorizontal = false
scrollView.bounces = false
于 2016-11-10T20:49:51.450 に答える
2

ビューが水平方向にスクロール(およびバウンス)するかどうかは、次の3つに依存します。

  • コンテンツサイズ
  • 左右のコンテンツインセット
  • スクロールビューの幅-

スクロールビューがコンテンツサイズとインセットに収まる場合、スクロールまたはバウンスしません。

次のように水平方向のバウンドを避けます。

scrollView.contentSize = CGSizeMake(scrollView.frame.size.width - scrollView.contentInset.left - scrollView.contentInset.right, height);

以前の回答ではcontentInsetが考慮されていなかったため、この回答を追加します。

于 2013-01-19T09:05:00.070 に答える
1

UIScrollView の contentSize が UIScrollView 自体より広くならないようにしてください。私自身のアプリでは、水平方向のスクロールを避けるにはこれで十分でした。

于 2008-10-06T21:09:13.973 に答える
0

覚えておくべきこと:水平方向に見るものは何もないことを知っていますが、ユーザーはそれを知っていますか?水平方向に表示する余分なコンテンツがない場合でも、少し水平方向にバウンスする必要がある場合があります。これにより、ユーザーは、水平方向にスクロールしようとする試みが無視されておらず、表示されるものが何もないことを知ることができます。しかし、ええ、多くの場合、あなたは本当にバウンスを望んでいません。

于 2008-10-07T14:38:43.730 に答える
0

一般的なソリューションである webViews の私のバージョン:

- (void)webViewDidFinishLoad:(UIWebView *)webView {

[webView.scrollView setContentSize: CGSizeMake(webView.frame.size.width, webView.scrollView.contentSize.height)];

}
于 2012-06-08T12:51:44.653 に答える
0

OS X 10.7 の時点で、OS X 向けに開発している人がここを見ている場合、解決策は、次のように、スクロール ビューで horizo​​ntalScrollElasticity プロパティを / に設定するfalseことです。NO

迅速:

scrollView.horizontalScrollElasticity = false

目的 C:

scrollView.horizontalScrollElasticity = NO
于 2016-08-09T01:20:04.010 に答える