Iphone 带有子视图的ViewController,UIScrollView第一次不可滚动

Iphone 带有子视图的ViewController,UIScrollView第一次不可滚动,iphone,objective-c,ios,xcode,Iphone,Objective C,Ios,Xcode,Im使用带有多个子视图的UIViewController,这些子视图来自XIBs(ViewController的视图),它们在使用UISegmentedControl之间进行选择。其中一个视图包含UIScrollView。问题是第一次添加此子视图时,UIScrollView不可滚动。如果我选择另一个片段/视图,然后再选择一个带有UIScrollView的片段/视图,现在它可以滚动了 UIScrollView仅在IB中添加。这是MainViewController.m中视图和UISegmented

Im使用带有多个子视图的
UIViewController
,这些子视图来自XIBs(ViewController的视图),它们在使用
UISegmentedControl
之间进行选择。其中一个视图包含
UIScrollView
。问题是第一次添加此子视图时,
UIScrollView
不可滚动。如果我选择另一个片段/视图,然后再选择一个带有
UIScrollView
的片段/视图,现在它可以滚动了

UIScrollView
仅在IB中添加。这是MainViewController.m中视图和UISegmentedControl的一些代码

- (void)viewDidLoad
{
[super viewDidLoad];

nameSubViewController = [[NameSubViewController alloc] initWithNibName:@"NameSubViewController" bundle:nil];
nameSubView = (NameSubView *)[nameSubViewController view];

priceSubViewController = [[PriceSubViewController alloc] initWithNibName:@"PriceSubViewController" bundle:nil];
priceSubView = (PriceSubView *)[priceSubViewController view];

[self.view addSubview:nameSubView];
currentView = nameSubView;
}

- (void) segmentAction:(id)sender
{
segmentedControl = sender;
if([segmentedControl selectedSegmentIndex] == 0) {
    [currentView removeFromSuperview];
    [self.view addSubview:nameSubView];
    currentView = nil;
    currentView = nameSubView;
}
if([segmentedControl selectedSegmentIndex] == 1) {
[currentView removeFromSuperview];
[self.view addSubview:priceSubView];
    currentView = nil;
    currentView = priceSubView;
}
在这段代码中,假设第1段(
priceSubView
)包含UIScrollView。如果我选择此段,除非我再次选择段0(
nameSubView
)并重新选择段1,否则
UIScrollView
不会对滚动做出反应


什么原因导致此问题以及如何解决此问题?

如果您需要在首次加载时滚动。 您需要在首次加载时添加scrollView。 您在更改段控件后添加了滚动视图,这就是它不滚动的原因。看看吧

更改
viewDidLoad
如下:

- (void)viewDidLoad
{
  [super viewDidLoad];

  nameSubViewController = [[NameSubViewController alloc] initWithNibName:@"NameSubViewController" bundle:nil];
  nameSubView = (NameSubView *)[nameSubViewController view];

  priceSubViewController = [[PriceSubViewController alloc] initWithNibName:@"PriceSubViewController" bundle:nil];
  priceSubView = (PriceSubView *)[priceSubViewController view];

  [self.view addSubview:priceSubView];
  currentView = priceSubView;
}

尝试[myScrollView设置可克隆:是];在ViewDidAppear中,
PriceSubViewController
看起来怎么样?我想象的场景是
scrollView。contentSize
是在计算出正确的contentSize之前以某种方式设置的。我认为您只是在片段更改后才添加滚动视图。在第一次加载时,您没有添加scrollView,对吗?