0
UITextField *theLastNameTF = [[UITextField alloc]init];
theLastNameTF.borderStyle = UITextBorderStyleNone;
theLastNameTF.font = [UIFont fontWithName:@"Helvetica-neue"  size:24.0];
theLastNameTF.textColor = [UIColor grayColor];
theLastNameTF.textAlignment = NSTextAlignmentLeft;
[theScrollView addSubview:theLastNameTF];

我正在使用上面的代码创建一个文本字段。我需要在文本字段下显示一行,所以我在文本字段中添加了一个灰色的 UILabel。

-(void)addLineToTextField:(UITextField *)theTextfield
{
    UILabel *theSeparatorLine = [[UILabel alloc]initWithFrame:CGRectMake(0, theTextfield.frame.size.height-0.5, theTextfield.frame.size.width, 0.5)];
    theSeparatorLine.frame = CGRectIntegral(theSeparatorLine.frame);
    theSeparatorLine.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    theSeparatorLine.backgroundColor = kCS_LightGrayColor;
    [theTextfield addSubview:theSeparatorLine];

    theSeparatorLine = nil;
}

我在文本字段中遇到问题,在输入文本时,文本是半可见的,光标没有向文本左侧移动。

请参考图片,我输入了“arun...arun 123”,正如预期的那样,光标应该在 123 的左侧,但光标并没有进一步移动。

在此处输入图像描述

我该如何解决这个问题?

编辑

这段代码是重构UI(在方向改变方法里面调用layoutViewForCurrentorientation())

-(void)layoutViewForCurrentorientation
{
    if ([[UIApplication sharedApplication]statusBarOrientation] == UIInterfaceOrientationPortrait) {
        [self potraitUI];
    }
    else
    {
        [self landscapeUI];
    }
}

如果我删除该行textField.font = [UIFont fontWithName:@"Helvetica-neue" size:24.0];.I 问题已解决,但我需要在文本字段中使用更大的字体。

4

4 回答 4

3

我使用的是字体[UIFont fontWithName:@"Helvetica-neue" size:24.0],文本字段大小为 25。我UITextfield将高度设置为 30,问题得到了解决。不知道实际原因,但它有效。

于 2014-08-11T13:07:28.363 回答
1

请设置文本框

UITextField *theLastNameTF = [[UITextField alloc]initWithFrame:CGRectMake(50,50,250,30)];

我希望它对你有帮助。

于 2014-08-08T12:27:02.710 回答
1

我在 9.3 中看到了同样的问题。似乎是一个iOS错误。

当 UITextField 是第一响应者时,UITextField 包含一个滚动视图(UIFieldEditor),其中包含输入视图(_UIFieldEditorContentView,-[UITextField inputView]。)错误是输入视图的大小不正确。输入视图不够宽,因此滚动视图的 -contentSize 也不正确。UITextField 尽可能向右滚动,但这还不够远,因为输入视图太小了。

我的解决方法是重置文本字段的文本。您可能还需要一个标志来忽略委托回调:

_ignoreTextDelegate = TRUE;

NSString *text = textField.text;
textField.text = nil;
textField.text = text;

_ignoreTextDelegate = FALSE;
于 2016-09-12T20:54:46.850 回答
0

尝试这个

UITextField *theLastNameTF = [[UITextField alloc]initWithFrame:CGRectMake(20,50,250,30)];
theLastNameTF.borderStyle = UITextBorderStyleNone;
theLastNameTF.font = [UIFont fontWithName:kHelveticaneue size:15.0];
theLastNameTF.textColor = [UIColor grayColor];
theLastNameTF.textAlignment = NSTextAlignmentLeft;
[theScrollView addSubview:theLastNameTF];

并设置线框的 y 值应该是相对于 textField 框架的 y 值

-(void)addLineToTextField:(UITextField *)theTextfield
{
    UILabel *theSeparatorLine = [[UILabel alloc]initWithFrame:CGRectMake(0, theTextfield.frame.origin.y + 0.5, theTextfield.frame.size.width, 0.5)];
    theSeparatorLine.frame = CGRectIntegral(theSeparatorLine.frame);
    theSeparatorLine.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    theSeparatorLine.backgroundColor = kCS_LightGrayColor;
    [theTextfield addSubview:theSeparatorLine];

    theSeparatorLine = nil;
}
于 2014-08-08T12:32:31.877 回答