【问题标题】:problem when creating UITextField programmatically iphone以编程方式创建 UITextField iphone时出现问题
【发布时间】:2025-12-12 15:00:01
【问题描述】:

当我尝试以编程方式创建 11 个文本字段时,我遇到了困难。问题是文本字段不显示。我在viewDidLoad 方法中创建它们。

这是我正在使用的代码:

- (void)viewDidLoad
{
    // Determine some basic info
    int numberOfTextfields = 11;
    int textfieldHeight = 40;
    int textfieldWidth = 200;


    // Create the UIScrollView
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, numberOfTextfields*textfieldHeight,textfieldWidth)];


    // Create all the textfields
    NSMutableArray *textfields = [NSMutableArray arrayWithCapacity:
                                  (NSUInteger)numberOfTextfields];
    for(int i = 0; i < numberOfTextfields; i++) {
        UITextField *field = [[UITextField alloc] initWithFrame:
                              CGRectMake(0,i*textfieldHeight,textfieldHeight,textfieldWidth)];

        [scrollView addSubview:field];
        [textfields addObject:field];
    }

    [super viewDidLoad];

}

关于他们为什么不出现的任何线索?

提前致谢。

【问题讨论】:

  • 你把滚动视图本身放在哪里?

标签: iphone objective-c cocoa-touch uitextfield


【解决方案1】:

您似乎从未将scrollView 添加为子视图。


您的文本字段最终被隐藏了,因为您从未设置边框样式。试试这个:

- (void)viewDidLoad
{
    // Determine some basic info
    int numberOfTextfields = 11;
    int textfieldHeight = 40;
    int textfieldWidth = 200;


    // Create the UIScrollView
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, textfieldWidth,numberOfTextfields*textfieldHeight)];
    scrollView.contentSize = CGSizeMake(numberOfTextfields*textfieldWidth, textfieldHeight);

    // Create all the textfields
    NSMutableArray *textfields = [NSMutableArray arrayWithCapacity:
                                  (NSUInteger)numberOfTextfields];
    for(int i = 0; i < numberOfTextfields; i++) {
        UITextField *field = [[UITextField alloc] initWithFrame:CGRectMake(0,i*textfieldHeight,textfieldWidth,textfieldHeight)];
        field.borderStyle = UITextBorderStyleRoundedRect;
        [scrollView addSubview:field];
        [textfields addObject:field];
    }

    [self.view addSubview:scrollView];

    [super viewDidLoad];
}

【讨论】:

  • 我试过 [self.view addSubview:scrollView];但它没有用,这就是我从代码中删除它的原因。
  • 边框样式...好的,谢谢。一个问题:如何将文本字段彼此分开?
  • 只需添加一些填充。创建UITextField 时,请执行以下操作:UITextField *field = [[UITextField alloc] initWithFrame:CGRectMake(0, i*textfieldHeight+10, textfieldWidth, textfieldHeight)];。一定要适当增加滚动视图的contentSize
  • 这正是我尝试过的,但它不起作用,我只在第一个字段之前没有填充它们之间。我想当我放弃搜索时我会提出一个新问题
【解决方案2】:

您需要将UIScrollView 添加到您的视图中以设置其内容区域,因为它不会自动管理它(如您所料)。

【讨论】:

    【解决方案3】:

    您需要将滚动视图添加到视图控制器。如果已分配,
    否则这样做 self.view = [[UIView alloc] initWithFrame:CGRectMake (0,0,320,460)] 在末尾添加这一行[self.view addSubview: scrollView]

    【讨论】:

      【解决方案4】:

      检查此代码.....框架参数是(x,y,width,height)

          int numberOfTextfields = 11;
          int textfieldHeight = 40;
          int textfieldWidth = 200;
      
      
          // Create the UIScrollView
          UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0,textfieldWidth,numberOfTextfields*textfieldHeight)];
      
      
          // Create all the textfields
          NSMutableArray *textfields = [NSMutableArray arrayWithCapacity:
                                        (NSUInteger)numberOfTextfields];
          for(int i = 0; i < numberOfTextfields; i++) {
              UITextField *field = [[UITextField alloc] initWithFrame:
                                    CGRectMake(0,i*textfieldHeight,textfieldWidth,textfieldHeight)];
              field.borderStyle=UITextBorderStyleRoundedRect;
              [scrollView addSubview:field];
              [textfields addObject:field];
          }
          [self.view addSubview:scrollView];
          [super viewDidLoad];
      

      【讨论】:

        【解决方案5】:

        试试下面的代码。添加了文本字段,您可以滚动文本视图。

        int numberOfTextfields = 11;
        int textfieldHeight = 40;
        int textfieldWidth = 200;

        UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0,textfieldWidth,numberOfTextfields*textfieldHeight)]; scrollView.contentSize = CGSizeMake(textfieldWidth, numberOfTextfields*textfieldWidth+10);

        NSMutableArray *textfields = [NSMutableArray arrayWithCapacity: (NSUInteger)numberOfTextfields];

        for(int i = 1; i

        [self.view addSubview:scrollView]; [超级视图DidLoad];

        【讨论】:

          最近更新 更多