无法在 iOS 中垂直添加文本字段?

Posted

技术标签:

【中文标题】无法在 iOS 中垂直添加文本字段?【英文标题】:Unable to add textfields vertically in iOS? 【发布时间】:2016-03-19 11:39:21 【问题描述】:

我已经通过故事板垂直添加了一些文本字段。在它们下面我想以编程方式添加更多文本字段,但它总是只添加一个文本字段。

下面是使用的代码

 int i;
    self.main_view.translatesAutoresizingMaskIntoConstraints = NO;
    self.scroll_view.translatesAutoresizingMaskIntoConstraints = NO;

    for (i=0; i<[arr_customEdtTxt count]; i++)
    
        JVFloatLabeledTextField *tf = [[JVFloatLabeledTextField alloc] initWithFrame:CGRectMake(25, y, 270, 27)];
        tf.textColor = [UIColor blackColor];
        tf.font = [UIFont fontWithName:@"Helvetica" size:14];
        CustomEditText *custom=[arr_customEdtTxt objectAtIndex:i];
        tf.placeholder=custom.field_name;
        tf.textAlignment=NSTextAlignmentLeft;

        previousTextfield=tf;
        //add bottom border
        [self addBorder:tf];
        tf.translatesAutoresizingMaskIntoConstraints = NO;
        [self.main_view addSubview:tf];
        y=y+27;

        [self.main_view addConstraint:[NSLayoutConstraint constraintWithItem:tf attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.main_view  attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0] ];

        [self.main_view addConstraint:[  NSLayoutConstraint constraintWithItem:tf
                                     attribute:NSLayoutAttributeHeight
                                     relatedBy:NSLayoutRelationEqual
                                        toItem:nil
                                     attribute:NSLayoutAttributeHeight
                                    multiplier:1.0
                                      constant:27.0]];
        [self.main_view addConstraint:[  NSLayoutConstraint constraintWithItem:tf
                                                                     attribute:NSLayoutAttributeWidth
                                                                     relatedBy:NSLayoutRelationEqual
                                                                        toItem:self.txt_email
                                                                     attribute:NSLayoutAttributeWidth
                                                                    multiplier:1.0
                                                                      constant:0]];
        if(i==0)
        
            [self.main_view addConstraint:[NSLayoutConstraint constraintWithItem:tf attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.txt_exprience attribute:NSLayoutAttributeBottom multiplier:1 constant:15.0f]];
        
        else
        
            [self.main_view addConstraint:[NSLayoutConstraint constraintWithItem:tf attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:previousTextfield attribute:NSLayoutAttributeBottom multiplier:1 constant:15.0f]];
        
        [arr_tf addObject:tf];
    

    [self.main_view layoutIfNeeded];
     [self setDatatoFields];

我收到约束错误我想在当前文本字段下方添加更多文本字段。请告诉我如何在下面添加越来越多的文本字段

【问题讨论】:

【参考方案1】:

看起来previousTextfieldtf 在这一行中引用了相同的文本字段:

[self.main_view addConstraint:[NSLayoutConstraint constraintWithItem:tf attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:previousTextfield attribute:NSLayoutAttributeBottom multiplier:1 constant:15.0f]];

我还注意到,最后您将 textField 添加到 arr_tf,但您也有 arr_customEdtTxt,这取决于您的 textField 数组中的哪一个,您应该将 previousTextfield = tf 更改为:

if(i > 0)
  //Change arr_tf for arr_customEdtTxt if that is your array
  previousTextfield = [arr_tf objectAtIndex:i-1];

【讨论】:

以上是关于无法在 iOS 中垂直添加文本字段?的主要内容,如果未能解决你的问题,请参考以下文章

在水平堆栈视图(自动布局)中将文本与图像垂直居中 - iOS

iOS 8 Today Extension:是否可以添加可编辑的文本字段?

在 iOS 中以编程方式在另一个文本字段下方添加文本字段

如何在 iOS 交互式通知中添加文本字段

快速解析时无法在json post请求参数中添加文本字段输入的文本

将占位符文本添加到文本字段时,iOS 7 中的应用程序崩溃