【问题标题】:programmatically UIScrollView not working以编程方式 UIScrollView 不起作用
【发布时间】: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 请锁定我的密码

标签: ios objective-c uiscrollview uitextfield


【解决方案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);
        

        现在构建它,一切顺利,继续编码:)

        【讨论】:

          猜你喜欢
          • 2020-08-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-15
          • 2011-07-09
          • 2012-02-13
          • 2013-06-17
          相关资源
          最近更新 更多