UIScrollViewにUIView(なかにUIButton)をaddSubviewしたけどUIButtonうまく動かないよーと思ったけど大丈夫だった

タップさせたかったら scrollview に addSubview しないといけないっぽいです。

僕が参考にしたサンプルだと以下のように scrollView subviews から view をとりだして scrollview の全体から 各view の位置を補正していくコードがありました。scrollview は横に長い view であり、それをずらしてページめくりを表現しているようです。

で、もし controller.view とかをそのまま scrollview にいれこみたかったら、このメソッドの中で、うまく位置をあわせて [self.scrollview addSubview:controller.view] とかしてあげたら動きました。コメントアウトにしているところみたいな感じで書くといいかもです。

[objc]

int curXLoc = 0;

NSArray *subviews = [self.scrollView subviews];

//int count = 1;

for (view in subviews)

{

if ([view isKindOfClass:[UIView class]] && view.tag > 0){

CGRect frame = view.frame;

frame.origin = CGPointMake(curXLoc, 0);

frame.size.width = frame.size.width;

view.frame = frame;

//if(count == 3){//3ページ目にHogeControllerを表示させる

// HogeController *hoge = [[HogeController alloc] init];

// hoge.frame = CGRectMake(curXLoc, hoge.frame.origin.y, hoge.frame.size.width, hoge.frame.size.height);

//}

curXLoc += (self.kScrollObjWidth);

}

}

//スクロールの総範囲

[self.scrollView setContentSize:CGSizeMake((self.kNumImages * self.kScrollObjWidth), self.kScrollObjHeight)];

[/objc]

もちろん UIButton とかを適宜 scrollview addSubview しても大丈夫だと思います。