我有一个.xib文件有一个视图,一个标签栏和其他3个scrollViews,当用户选择一个新标签栏项时我执行此代码:
//Views e Scrolls
IBOutlet UIView *myView;
IBOutlet UIScrollView *myScroll;
IBOutlet UIScrollView *myScroll2;
IBOutlet UIScrollView *myScroll3;
@property (nonatomic) UIScrollView *scroll;
-(void)tabBar:(UITabBar *)tabBar
didSelectItem:(UITabBarItem *)item{
NSArray *viewsToRemove = [myView subviews];
for (UIView *v in viewsToRemove) {
[v removeFromSuperview];
}
if(item.tag == 1){
self.title = @"scroll 1";
scroll = myScroll;
}
if(item.tag == 2){
self.title = @"scroll 2";
scroll = myScroll2;
}
if(item.tag == 3){
self.title = @"scroll 3";
scroll = myScroll3;
}
scroll.contentSize = scroll.frame.size;
scroll.frame = myView.frame;
scroll.scrollEnabled = YES;
[myView addSubview:scroll];
[myView setBackgroundColor:[UIColor clearColor]];
}
这段代码效果很好,但是当我选择之前从视图中删除的其中一个卷轴时,它们会丢失滚动(之前没有发生过),为什么会发生这种情况以及如何解决?
答案 0 :(得分:0)
假设我理解你的意图是正确的:从超级视图中删除滚动视图也会将其从响应者链中删除。它不能再响应触摸事件 - 因此不会滚动。
答案 1 :(得分:0)
这一行在这里:
scroll.contentSize = scroll.frame.size;
当您的UIScrollView
contentSize
与其frame.size
匹配时,它不需要滚动(按定义)。您需要弄清楚其内容的实际大小并使用它。通过这样做,您至少可以证明正确的功能(即使它没有正确的值):
scroll.contentSize = CGSizeMake(scroll.frame.size.width*2, scroll.frame.size.height*2);
但是,您必须为自己找到真正的内容大小。
答案 2 :(得分:0)
问题本身和你的代码目的不是很清楚。您可以尝试进一步解释。并检查此行 -
scroll.contentSize = scroll.frame.size;
其contentSize< = frame.size的UIScrollView不会滚动。要使其滚动,contentSize应该大于frame.size
您通常应该根据scrollView的内容量(子视图)设置contentSize。
在下一行中你更改了frame.size,但我认为在你的情况下,这不会使帧大小小于contentSize。