以编程方式 UIScrollView 不起作用
Posted
技术标签:
【中文标题】以编程方式 UIScrollView 不起作用【英文标题】:programmatically UIScrollView not working 【发布时间】:2014-07-15 05:15:39 【问题描述】:我是 ios 新手。我尝试将 8 个 UItext-field 添加到 UIScrollView。 我的代码是这样的:-
City=[[UITextField alloc]init];
City.frame=CGRectMake(45, 150, 221, 30);
[self.view addSubview:City];
City.backgroundColor=[UIColor whiteColor];
City.placeholder=@"Email";
[City setFont:[UIFont fontWithName:@"Times New Roman" size:20]];
//[Username setTextAlignment:UITextBor];
City.layer.borderColor=[[UIColor yellowColor]CGColor];
City.layer.borderWidth=2.0;
[City setBorderStyle:UITextBorderStyleLine];
same as
city1=[[UITextField alloc]init];
City1.frame=CGRectMake(45, 195, 221, 30);
|
|
|
|
city8=[[UITextField alloc]init];
city8.frame=CGRectMake(45, 355, 221, 30);
开玩笑,我现在创建了 8 个文本文件,都添加到 UIScrollview。
UIScrollView *scroll = [UIScrollView alloc];
scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(45, 105, 221, 355)];
scroll.pagingEnabled = YES;
scroll.showsHorizontalScrollIndicator = YES;
scroll.showsVerticalScrollIndicator = YES;
scroll.scrollsToTop = NO;
scroll.delegate = self; //say "NO" to disable scroll
[self.view addSubview:scroll];
[scroll addSubview:City];
[scroll addSubview:City1];
|
|
[scroll addSubview:City8];
我只需要 UITextField 和 UIScrollView.First crated UITextField 然后创建 ScrollView 并添加两者,但我的 textFileds 没有添加 Scroll
请给我任何想法,请告诉我我的代码有什么问题
【问题讨论】:
不要给变量名大写 尝试为滚动视图设置 contentSize @AndreyChernukha 删除了大写名称,但没有运气 设置滚动视图的内容大小 @karthikeyan 请锁定我的密码 【参考方案1】:删除此代码并检查
[self.view addSubview:City];
在滚动视图中添加所有文本字段后放置此代码。
[self.view addSubview:scroll];
也许对你有帮助。
【讨论】:
感谢您的回复,我按照您说的尝试了但没有运气请给我任何想法 你是否设置了滚动视图的内容大小。 我这样设置内容大小 scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(45, 105, 221, 355)]; scrollView.contentSize = CGSizeMake(scrollView.frame.size.width, sizeOfContent);【参考方案2】: UIScrollView *scroll = [UIScrollView alloc];
scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
scroll.pagingEnabled = YES;
scroll.showsHorizontalScrollIndicator = YES;
scroll.showsVerticalScrollIndicator = YES;
scroll.scrollsToTop = NO;
scroll.delegate = self; //say "NO" to disable scroll
scroll.contentSize = CGSizeMake(scrollView.frame.size.width*8,0);
UITextField*City=[[UITextField alloc]init];
City.frame=CGRectMake(45, 150, 221, 30);
City.backgroundColor=[UIColor whiteColor];
City.placeholder=@"Email";
[City setFont:[UIFont fontWithName:@"Times New Roman" size:20]];
//[Username setTextAlignment:UITextBor];
City.layer.borderColor=[[UIColor yellowColor]CGColor];
City.layer.borderWidth=2.0;
[City setBorderStyle:UITextBorderStyleLine];
UITextField*city1=[[UITextField alloc]init];
city1.frame=CGRectMake(45, 195, 221, 30);
city1.backgroundColor=[UIColor whiteColor];
city1.placeholder=@"Email1";
UITextField*city8=[[UITextField alloc]init];
city8.frame=CGRectMake(45, 355, 221, 30);
[scroll addSubview:City];
[scroll addSubview:city1];
[scroll addSubview:city8];
[self.view addSubview:scroll];
希望对你有帮助。
【讨论】:
【参考方案3】:试试这个代码
UIScrollView *scroll ;
scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
//set your frame according to your viewframe or text field frame.here give width and height of scrolling
scroll.contentSize=CGSizeMake(self.view.frame.size.width+100,self.view.frame.size.height+100);
scroll.pagingEnabled = YES;
self.scrView.showsHorizontalScrollIndicator = YES;
self.scrView.showsVerticalScrollIndicator=YES;
【讨论】:
【参考方案4】:如果您想将UITextField's
添加到UIScrollView
,则无需添加self.view
。
所以删除将UITextField's
添加到self.view
的语句。虽然这不是您问的问题,但没有必要在视图中添加这些文本字段。
所以删除所有 --> [self.view addSubview:City];
就您的问题而言,除了一件事之外,您做的一切都是正确的,那就是“增加您的UIScrollView
的内容大小”。你可以按如下方式增加
scroll.contentSize = CGSizeMake(Width,height);
宽度和高度您可以根据需要设置。
更多信息请参考UIScrollView reference
【讨论】:
【参考方案5】:City=[[UITextField alloc]init];
City.frame=CGRectMake(45, 150, 221, 30);
[self.view addSubview:City];//----------------> Please remove this line
City.backgroundColor=[UIColor whiteColor];
City.placeholder=@"Email";
[City setFont:[UIFont fontWithName:@"Times New Roman" size:20]];
//[Username setTextAlignment:UITextBor];
City.layer.borderColor=[[UIColor yellowColor]CGColor];
City.layer.borderWidth=2.0;
[City setBorderStyle:UITextBorderStyleLine];
same as
city1=[[UITextField alloc]init];
City1.frame=CGRectMake(45, 195, 221, 30);
|
|
|
|
city8=[[UITextField alloc]init];
city8.frame=CGRectMake(45, 355, 221, 30);
创建所有文本字段(八个文本字段)后,然后创建 ScrollView
//UIScrollView *scroll = [UIScrollView alloc]; //---------------> No Need this line
UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(45, 105, 221, 355)];
scroll.pagingEnabled = YES; //---------------->>> Do you need paging ? Other wise set NO
scroll.showsHorizontalScrollIndicator = YES;
scroll.showsVerticalScrollIndicator = YES;
scroll.scrollsToTop = NO;
scroll.delegate = self; //say "NO" to disable scroll
[scroll addSubview:City];
[scroll addSubview:City1];
|
|
[scroll addSubview:City8];
将所有文本字段添加为滚动视图的子视图后,我们必须将滚动视图放置到您的父视图所以请添加以下代码
[self.view addSubview:scroll];
现在一切正常,但现在你的滚动视图仍然不能滚动,因为我们没有设置滚动内容大小,要这样做
1) 您的文本字段高度为 30,两个文本字段之间的间距为 15,因此总共 45 你有 8 个文本字段 Toatl = 360
2) 您的起始文本字段 Y 轴是 150 而不是零,所以我们需要添加 360 + 150 = 510
3) 你的滚动视图宽度和文本字段宽度是通用的 = 221
scroll.contentSize = CGSizeMake(510,221);
现在构建它,一切顺利,继续编码:)
【讨论】:
以上是关于以编程方式 UIScrollView 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
调整 UIScrollView 的大小以适应其内容……不起作用
ios - UIScrollView中的iOS编程缩放不起作用
dismissWithClickedButtonIndex 在 UIViewController - UIScrollView - ActionSheet 关系中不起作用