Iphone 将UITextView作为UIView中的子视图添加到UIScrollView
我有一个连接到视图xib的Iphone 将UITextView作为UIView中的子视图添加到UIScrollView,iphone,cocoa-touch,uiview,uiscrollview,uitextview,Iphone,Cocoa Touch,Uiview,Uiscrollview,Uitextview,我有一个连接到视图xib的UIViewController(ContentViewController)。我在UIView上放置了一个TextView,它在IB的层次结构中显示为一个子视图。 ContentViewController有一个作为插座的标签,它连接到ContentView.xib上的标签上。当执行下面的代码时,第一个视图显示文本视图,但在其他视图/页面中滚动只显示标签 for(int i=0; i< 5; i++){ ContentViewController *cont
UIViewController
(ContentViewController
)。我在UIView
上放置了一个TextView
,它在IB的层次结构中显示为一个子视图。ContentViewController
有一个作为插座的标签,它连接到ContentView.xib
上的标签上。当执行下面的代码时,第一个视图显示文本视图,但在其他视图/页面中滚动只显示标签
for(int i=0; i< 5; i++){
ContentViewController *contentView = [[ContentViewController alloc] initWithNibName:@"ContentView" bundle:[NSBundle mainBundle]];
[contentView loadView];
contentView.theLabel.text =[NSString stringWithFormat:@"hello again..%d", i];
[self.scrollView addSubview:contentView.view];
}
for(int i=0;i<5;i++){
ContentViewController*contentView=[[ContentViewController alloc]initWithNibName:@“contentView”捆绑:[NSBundle mainBundle]];
[contentView-loadView];
contentView.theLabel.text=[NSString stringWithFormat:@“你好,再次..%d”,i];
[self.scrollView addSubview:contentView.view];
}
我可以将按钮或文本字段拖到IB中的视图上,当我滚动页面时,它们都在那里。标签上也设置了上述文本。文本视图在第一页之后消失。我也不能设置它的文本。我将一个新的textview拖到UIView
上,它在第一页之后也消失了。我需要为textview做些不同的事情吗
我发现
UIScrollView
在每个页面上。如果我垂直滑动滚动视图所在的位置,将显示文本。但在第一个滚动视图之后,我必须对所有滚动视图执行此操作
但是,一旦我刷了它们,文本将保持可见,直到应用程序重新启动。如果没有足够的文本导致滚动,textview将永远不会出现。对这种行为有什么建议吗?试试:
[文本视图设置需要显示]
原始答案 您不必以不同的方式处理textview 我首先担心你调用“loadview”。你不应该直接打电话给他。它在需要时自动调用 此外,您应该在循环之前声明contentview,这样会导致内存泄漏 另一个问题是,在循环过程中,从不更改每个视图的帧。它们都有{0,0}的原点。据我所知,从你的代码。这可能是隐藏视图的原因 最后,在风格方面,我不会叫我视图控制器XXXXX视图,它们应该有controller这个词
CGRect frame;
ContentViewController *myContentViewController = nil;
for(int i=0; i< 5; i++){
myContentViewController = [[myContentViewController alloc] initWithNibName:@"ContentView" bundle:[NSBundle mainBundle]];
frame = myContentViewController.view.frame;
frame.origin.x=(frame.size.width*i);
myContentViewController.view.frame=frame;
myContentViewController.theLabel.text =[NSString stringWithFormat:@"hello again..%d", i];
[self.scrollView addSubview: myContentViewController.view];
[myContentViewController release];
}
要添加更多内容: 尝试以编程方式在viewDidload或ViewDidDisplay中添加文本视图,以查看其是否有效
在您的评论之后,如果我不得不进行另一种猜测,我会说在添加textView之后,您可能正在代码的其他地方操纵它。开始注释掉影响文本视图的所有行,看看会发生什么。不是viewDidLoad,而是loadView。调用viewDidLoad有时是不正确的,但不是loadView(AFAIK)。另外,您是否将scrollview的contentView大小设置为:(NumberOfContentView*contentViewWidth)?谢谢。调用viewDidLoad是暂时的,直到我让textview正常工作。否则,我必须创建非iBOutlet属性,然后在viewDidLoad期间进行分配。文本视图在第一次使用代码查看后仍然不显示。标签仍然显示良好。我还可以添加带有标签的UIWebView和UIScrollView。它们显示在所有页面上。对(numberOfContentViews*contentViewWidth)问题回答是。内容视图显示良好。我可以在每个角落放置控件并查看它们。我也试着把TeXVIEW放到中间,但是在第一个视图之后就消失了。你可以试着在VeldDead中添加TeXVIEW,看看你是否有同样的问题。
scrollView.contentSize = CGSizeMake(numberOfContentViews*contentViewWidth, contentViewHeight);