web-dev-qa-db-ja.com

Autolayoutを使用していないにもかかわらず、UIScrollViewとiOS7およびXcode 5で垂直スクロールが機能しない

IOS 7とXcode 5でUIScrollViewを使用しようとすると、垂直スクロールに応答しません。まず、ScrollViewをオブジェクトライブラリからストーリーボードにドラッグアンドドロップし、そのサイズを幅= 320および高さ= 1500に設定してから、3つのラベルをドラッグアンドドロップし、それらのラベルをy = 300、800、1200に配置します。y座標のラベルの場合800と1200に等しいため、最初にスクロールビューを上に移動して、これらのオブジェクトを対応するy値に配置します。次に、scrollviewをアウトレットとして実装ファイルに接続し、viewDidLoadメソッドでself.myScrollView.contentSize = CGSizeMake(320, 1500)と記述します。最後に、scrollviewのサイズをwidth = 320およびheight = 568に戻します。次に、シミュレーターを実行しますが、垂直スクロールに反応しません。次に、use autolayoutを実行してシミュレータを再度実行すると、まだまったく機能しません。

では、どうすれば問題を修正できますか?または、誰かがiOS 7とXcode 5のUIScrollViewについて教えてくれる便利なチュートリアルを教えてもらえますか?

Xcode 5.0.2を使用しています。

ありがとう。

9
Blaszard

これが自己回答です

self.myScrollView.contentSize = CGRectMake(320, 1500);viewWillAppear内からviewDidLoadに変更してシミュレーターを実行したところ、何らかの理由でスクロールが機能しました。元の投稿で述べたように、私は最初にviewDidLoadに書き込み、kkocabiyikの回答を読んだ後、viewWillAppearに移動しました。では、元のコードが機能しなかった理由がわかりません。おそらく、ManiとRashadから多くの支援を得ている間にコードを少し変更したが、上記のコードをviewWillAppear内に同時に保持したためです。

同じ罠に巻き込まれて将来この質問に来る人のために、私はこの設定から問題を修正することができました:

  • viewDidLoad内にself.myScrollView.contentSize = CGSizeMake(320, 1500);を書き込みます
  • uIScrollViewをストーリーボードからmyScrollViewにIBOutletプロパティとして接続します
  • 自動レイアウトを使用しない
  • ストーリーボード内からスクロールビューするには、x = 0、y = 0、幅= 320、高さ= 568を設定します

また、autolayoutを使用しても機能しないことに注意してください。また、autolayoutを使用してviewWillAppear内でcontentsizeを設定することもできません。

この質問に協力してくれた皆さんに感謝したい。ありがとうございました。

13
Blaszard

this ビデオをご覧ください。 XCode 5/iOS 7でUIScrollLayoutとautolayoutを使用する方法を示します。

13
jaxvy

scrollview height as screensize or less than contentsize.を設定する必要があります。その後、垂直方向にのみスクロールします。(contensize> scrollview.height)そして、bool vairable scrollEnabled set _YESを確認します。

10
Mani

X = 0およびy = 0を設定します。コンテンツサイズを(320,1500)に設定する必要があります。xおよびyではありません。 xとyは、コンテンツサイズではなく、スクロールビューの開始位置を定義します。コンテンツサイズの場合:

    self.scrollView.contentSize = CGSizeMake(320, 1500);

お役に立てれば.. :)

6
Rashad

AutoLayoutを使用しているときに要素のフレームを変更するかどうかは関係ありません。 AutoLayoutを使用したビューフレームは、viewDidLoadメソッドで行った処理を無視するように処理されます。 必須 AutoLayoutを使用する場合は、viewDidLoadで行った作業をviewDidAppearにコピーして貼り付けることができます。これにより、AutoLayoutが完了した後に行われるすべての作業が行われます。

5
kkocabiyik

このチュートリアルは、scrollviewsで私の命を救いました: Scroll View Autolayout Tutorial

3
allemattio

onOffScroll.contentSize = CGSizeMake(content width,content height);

viewDidLayoutSubviewsメソッドを使用し、このメソッドのコードを使用します。それはあなたを助けるかもしれません。

3
vikrant tanwar

私はXcode 6でも同じ問題に直面しました この手順 に従ってください。これは本当に非常に役立ち、時間を節約できます。

3
iKT

ストーリーボードのスクロールビューの高さは画面よりも大きくできないことに気づきました。もっと大きくしたい場合は、ストーリーボードではなくプログラムで行います。

2
fullMoon

textFieldまたは画像を追加すると、スクロールビューが機能しないという問題が発生しました。すべてをスタックビューに入れることでこの問題を解決しました。その後、携帯電話で実行すると、スクロールすることができました。

1
user9160004