2

シーンに Scrollview を作成し、IB でシーンにボタンを追加するとします。次に、コードに入り、コンテンツ サイズを設定し、ユーザー インタラクションを有効にして、別のボタンを追加します。シミュレーターでプログラムを実行すると、Scrollview が機能しません。シーンの IB にあるボタンを削除すると、正常に機能します。IBとプログラムの両方でスクロールビューにアイテムを追加することはできませんか?

編集:すでに持っていたアプリの何かかもしれないと思いました。そこで、新しいプロジェクトを作成することにしました。そこにあるのはコードと下のシーンの写真だけです。実際、ScrollView の下に追加されます。

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[myButton setTitle:@"My Button" forState:UIControlStateNormal];
myButton.frame = CGRectMake(100, 100, 150, 50);
[scrollView addSubview:myButton];
scrollView.userInteractionEnabled = YES;
[scrollView setContentSize:CGSizeMake(320, 1000)];

ここに画像の説明を入力

4

5 に答える 5

4

役立つリンクは次のとおりです

基本的にこれが言っていることは、自動レイアウトでは setContentSize: を使用しないし、使用する必要もないということです。代わりに、内側のビューの端をスクロールビューの端にスナップする必要があります。私がそれをどのように解決したかを示しましょう。

scrollBackground : scrollview でスクロールする必要がある他のすべてのビューを含むビュー。

[scrollview addSubview:scrollBackground];

[scrollview addConstraints:[NSLayoutConstraint 
       constraintsWithVisualFormat:@"V:|[scrollBackground(1000.0f)]|" 
       options:0 metrics:nil 
       views:NSDictionaryOfVariableBindings(scrollBackground)]];

[scrollview addConstraints:[NSLayoutConstraint 
       constraintsWithVisualFormat:@"H:|[scrollBackground(==scrollview)]|" 
       options:0 metrics:nil 
       views:NSDictionaryOfVariableBindings(scrollBackground)]];

ここでの鍵はそれらです | VisualFormat 文字列の先頭と末尾。これらは、スクロールビューに contentSize が何であるかを伝えます。もちろん、スクロールビューのフレームサイズよりも小さい contentSize を持っている場合、その方向にはスクロールしません。私の例では、これは幅に当てはまります。上下にスクロールするだけです。

于 2012-10-23T15:39:20.037 に答える
4

ここで、autoLayout が原因で scrollView がスクロールしていません。使用していない場合は、auto Layout のチェックを外します。

私はあなたの要件に似たものを作りました。正常に動作しており、autoLayout を許可した後、スクロールが停止しました。

自動レイアウト制約は、画面の表示部分に収まります。scrollView 内のオブジェクトが画面サイズを超える場合、スクロールします。

したがって、autoLayout を使用していない場合は、チェックを外して問題なく動作することをお勧めします。

于 2012-10-15T12:12:44.870 に答える
1

投稿した場合、すべてのコンテンツが表示されるため、スクロールビューはスクロールしません。最後の行を次のように変更してみてください。

[scrollView setContentSize:CGSizeMake(50, 50)];

コンテンツのサイズがビュー内のすべてのコンテンツよりも小さいため、スクロールが開始されます。

于 2012-10-15T12:06:26.480 に答える
1

viewDidLoad でコンテンツ サイズを設定するか、nib ファイルからビューが既にロードされた後のいずれかの時点で設定してください。

vishy が指摘したように、Button は ScrollView の Hierarchy の一部である必要があります。それ以外の場合は、空のビューをスクロールするだけです。

于 2012-10-15T11:34:24.533 に答える
0

この質問のd2burkeの回答を確認してください。viewWillLayoutSubviews代わりに コードを配置する必要がありますviewDidAppear

于 2013-01-16T08:23:46.693 に答える