質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

7774閲覧

UIScrollViewがスクロールできない問題について

sanjo

総合スコア14

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2018/04/01 11:29

下記のようなコードで、UIScrollViewをいくつか作るのですが、なぜか表示されたUIScrollViewがスクロールできません。
検索するとオートレイアウトが原因だというようなことが出てきたのですが、このコードではストーリーボードを使用していないため、それは関係ないと思われます。
何が原因か教えていただけないでしょうか。

swift

1class mainViewCon:UIViewController, UIWebViewDelegate{ 2 var datas:String! 3 var bar:[UIButton]=[] 4 var mainVV:[UIScrollView]=[] 5 var w:CGFloat! 6 var h:CGFloat! 7 var mainw:UIView! 8 private var tabScroll:UIScrollView! 9 10 override func viewDidLoad() { 11 super.viewDidLoad() 12 w=self.view.bounds.width 13 h=self.view.bounds.height 14 var back:UIImageView=UIImageView(frame:CGRect(x:0,y:0,width:w,height:h)) 15 back.image=UIImage(named:"mainBack.png") 16 self.view.addSubview(back) 17 let seting:UIButton=UIButton() 18 seting.frame=CGRect(x:w/32*26,y:h/57*2,width:w/32*4,height:h/12) 19 seting.setImage(UIImage(named:"menue.png"),for: .normal) 20 seting.addTarget(self,action:#selector(mainViewCon.setting(sender:)),for: .touchUpInside) 21 self.view.addSubview(seting) 22 //json start 23 var newsData:Data=datas.data(using:String.Encoding.utf8)! 24 do{ 25 mainw=UIView(frame:CGRect(x:-1*w,y:h/570*140,width:w,height:h/570*430)) 26 self.view.addSubview(mainw) 27 let json=try JSONSerialization.jsonObject(with:newsData,options:JSONSerialization.ReadingOptions.allowFragments) 28 let rooting=json as! NSDictionary 29 let rooting2=rooting["num"] as! NSArray 30 let tab=rooting2.count+1 31 let rooting1=rooting["title"] as! NSArray 32 let rooting3=rooting["num"] as! NSArray 33 for (index,con)in rooting3.enumerated(){ 34 print(con) 35 var numbe=con as! Int 36 var numbers=numbe-6 37 var mainVS:UIScrollView=UIScrollView() 38 mainVS.frame=CGRect(x:w*CGFloat(index+1),y:0,width:w,height:h/570*430) 39 mainVS.contentSize=CGSize(width:w,height:h*2) 40 mainVV.append(mainVS) 41 mainw.addSubview(mainVV[index]) 42 var button:UIButton=UIButton() 43 button.frame=CGRect(x:CGFloat(index)*w/32*10+w/32*10,y:0,width:w/32*10,height:h/560*54) 44 button.tag=index+1 45 button.setTitle(rooting1[index] as! String,for:.normal) 46 button.setBackgroundImage(UIImage(named:"barButtonN.png"),for:.normal) 47 button.setTitleColor(UIColor.black, for: .normal) 48 button.addTarget(self,action:#selector(mainViewCon.barChange(sender:)),for: .touchUpInside) 49 bar.append(button) 50 tabScroll.addSubview(bar[index+1]) 51 var button1:UIButton=UIButton() 52 button1.frame=CGRect(x:0,y:0,width:w/3,height:h/114*27) 53 button1.layer.borderColor=UIColor.lightGray.cgColor 54 button1.layer.borderWidth=1 55 mainVV[index].addSubview(button1) 56 var button2:UIButton=UIButton() 57 button2.frame=CGRect(x:w/3,y:0,width:w/3,height:h/114*27) 58 button2.layer.borderColor=UIColor.lightGray.cgColor 59 button2.layer.borderWidth=1 60 mainVV[index].addSubview(button2) 61 var button3:UIButton=UIButton() 62 button3.frame=CGRect(x:w/3*2,y:0,width:w/3,height:h/114*27) 63 button3.layer.borderColor=UIColor.lightGray.cgColor 64 button3.layer.borderWidth=1 65 mainVV[index].addSubview(button3) 66 var button4:UIButton=UIButton() 67 button4.frame=CGRect(x:0,y:h/114*27,width:w/3,height:h/114*27) 68 button4.layer.borderColor=UIColor.lightGray.cgColor 69 button4.layer.borderWidth=1 70 mainVV[index].addSubview(button4) 71 var button5:UIButton=UIButton() 72 button5.frame=CGRect(x:w/3,y:h/114*27,width:w/3,height:h/114*27) 73 button5.layer.borderColor=UIColor.lightGray.cgColor 74 button5.layer.borderWidth=1 75 mainVV[index].addSubview(button5) 76 var button6:UIButton=UIButton() 77 button6.frame=CGRect(x:w/3*2,y:h/114*27,width:w/3,height:h/114*27) 78 button6.layer.borderColor=UIColor.lightGray.cgColor 79 button6.layer.borderWidth=1 80 mainVV[index].addSubview(button6) 81 for num in 7...numbe{ 82 let numb=num-7 83 //0からスタート 84 var button7:UIButton=UIButton() 85 button7.frame=CGRect(x:0,y:h/114*54+h/570*90*CGFloat(numb),width:w,height:h/570*90) 86 button7.layer.borderColor=UIColor.lightGray.cgColor 87 button7.layer.borderWidth=1 88 mainVV[index].addSubview(button7) 89 } 90 } 91 bar[1].setBackgroundImage(UIImage(named:"barButtonS.png"),for:.normal) 92 93 94 }catch{ 95 } 96 97 } 98}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2018/04/02 02:52

Viewの階層を書いてもらえますか?(コード読む気にならないので)
guest

回答1

0

AutoLayoutを使用しない場合、UIScrollViewをスクロールできるようにするには framecontentSize の設定をする必要があります。ご質問のコードにはそれらの設定の記述が見当たりませんのでまずはそれらの設定をしてみてください。

公式ドキュメント:
https://developer.apple.com/jp/documentation/UIScrollView_pg.pdf

投稿2018/04/02 00:19

kakajika

総合スコア3131

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2018/04/02 01:11

mainVS.frame=CGRect(x:w*CGFloat(index+1),y:0,width:w,height:h/570*430) mainVS.contentSize=CGSize(width:w,height:h*2) これは違うのかな? これ値をprintしてみれば何か分かるかも。
kakajika

2018/04/02 01:18

あ、たしかに。。そちらは設定されていましたね。 てっきり最初に出てきたtabScrollのことかと思い回答してしまいました。
fuzzball

2018/04/02 01:25 編集

あー、私はそっちに気付いていませんでした。 でもtabScrollってインスタンスも作られてないし、どこにもaddSubviewされてないし‥。
sanjo

2018/04/02 02:49

回答ありがとうございます。tabScrollのほうは問題ないです。mainVSで問題が起こっています。 fuzzballさんの言っているように値を出力してみたのですが、普通に正常値しか出ませんでした...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問