Pocket

[Objective-C]UIScrollViewにUIViewControllerのViewを追加する

こんにちは、プログラマのLFです。

雪ですね。
こんな日は一刻も早く家に帰り飼い猫を膝の上で寝かしつけ、
のんびり暖をとって過ごしたいものです。
まぁうちの猫は7キロあるのですぐに足がしびれて
のんびりしてられなくなるのですが…。

さて。
今日はUIScrollViewにUIViewControllerのViewを追加する方法について書いてみたいと思います。
UIScrollViewにUITableViewを追加する方法は検索によくヒットするのですが
UIViewControllerのViewを追加する方法については
うまくヒットしなかったので、同じことで悩んでいる方の参考になればいいな、と。

まずソースコードから。

ViewController.m

想定として
・Main.storyboardにViewControllerクラスを適用したSceneが配置されていて
 そこにUIScrollViewが配置され、IBOutletでscrollViewという変数名で紐付けされている

・Main.storyboardにIdentifierがhoge、hogehoge、hogehogehogeというSceneが配置されていて     

 UIViewControllerのサブクラスが適用されている
状態です。

[self addChildViewController:initialViewController]

をしている理由ですが、
viewをsddSubViewしただけではScene上にUITableViewが配置されているときに
スクロールがされないという現象がありまして、
上記の一行を追加しました。

またUIScrollViewとUITableViewが入れ子になっている場合は
UIScrollViewのサブクラスを作成して
hitTestメソッドを上書きしてあげないと
子のUITableViewが操作できないようです。

CustomScrollView.m(UIScrollViewのサブクラスの実装ファイル)

ひとまずこの方法でUIScrollViewにUIViewControllerのViewを追加することができました。
参考になればうれしいです。
 

Pocket