UITableView输入字段被覆盖

时间:2013-12-21 22:58:11

标签: ios iphone objective-c

我有一个奇怪的问题。当我加载包含两个文本字段的tableview(一个用于电子邮件,一个用于密码)时,我只能看到光标的底部。就好像有一些东西覆盖输入区域(请参见下图)。此问题仅在我从iOS6定位到iOS7时开始。

任何想法可能会出现问题吗?

enter image description here

这是我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    [cell setSelectionStyle:UITableViewCellSelectionStyleNone];

    CGRect frame;
    frame.origin.x = 10;
    frame.origin.y = 10;
    frame.size.height = 30;
    frame.size.width = 200;

    UILabel *label = [[UILabel alloc] initWithFrame: frame];

    label.font = [UIFont boldSystemFontOfSize:16.0];
    label.text = [arrayLogin objectAtIndex:indexPath.row];

    [cell.contentView addSubview:label];

    frame.origin.x = 10;
    frame.size.height = 90;
    frame.size.width = 280;

    if (indexPath.row == 0) {//user name part
        userNameTextField = [[UITextField alloc ] initWithFrame: frame];
        userNameTextField.returnKeyType  = UIReturnKeyDefault;
        userNameTextField.delegate = self;
        userNameTextField.placeholder = @"Email";
        [cell.contentView addSubview:userNameTextField];
    }else
    {
        passwordTextField = [[UITextField alloc] initWithFrame:frame];
        passwordTextField.returnKeyType = UIReturnKeyDefault;
        passwordTextField.secureTextEntry = YES;
        passwordTextField.delegate = self;
        passwordTextField.placeholder = @"Password";
        [cell.contentView addSubview:passwordTextField];
    }

    return cell;
}

1 个答案:

答案 0 :(得分:2)

默认行高为44(不确定 - 靠近它。)

在您的代码中,您使用frame.size.height = 90;作为单元格中的subView添加。 所以它超过了你的细胞高度。

要制作自定义单元格高度,您应该更改以下委托方法:

 -(CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath
{
    //NSLog(@"HeightForRow");
    return 44+50;//ofcourse change it as you wish
}

我还想将textField的frame.origin.y更改为42 和文本frame.size.height到90 -42