输入大文本时,Textfield的大小会发生变化

时间:2013-06-07 12:06:48

标签: iphone ios uitextfield

在我的应用中,我有多个textField。当我输入小文本时它会正常工作,但输入大文本时会比textField大小更改。

喜欢这个

小文字

enter image description here

大文字

enter image description here

是的,它只发生在iOS6而不是iOS5中。

更新

我不知道怎么做但我在ios6屏幕上更改了我的约束属性,它现在运行正常。谢谢你的帮助。

4 个答案:

答案 0 :(得分:0)

试试这个

[yourTextField setAdjustsFontSizeToFitWidth:FALSE];

答案 1 :(得分:0)

尝试使用此功能。但是UITextField没有提供任何选项来使其成为多行文本框。所以你必须使用UITextView

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    CGSize size = [txtView.text sizeWithFont:txtView.font];
    CGRect f = txtView.frame;
    f.size.height = ceil(size.width/f.size.width)*size.height;
    txtView.frame = f;
}

了解更多信息..

  1. How to create a multiline UITextfield?
  2. 否则,如果您不想在下一行中制作,请使用此代码。

    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
    {
    
        CGSize boundingSize = CGSizeMake(320, CGFLOAT_MAX);
        CGSize requiredSize = [textField.text sizeWithFont:[UIFont fontWithName:@"Helvetica" size:20.0f] constrainedToSize:boundingSize
                                             lineBreakMode:NSLineBreakByWordWrapping];
        CGFloat requiredHeight = requiredSize.height;
    
        CGRect frame1;
        frame1 = txtFld.frame;
        frame1.size.height = requiredHeight;
        txtFld.frame = frame1;
        NSLog(@"%f", frame1.size.height);
        return YES;
    }
    

答案 2 :(得分:0)

如果您不想更改宽度,则可以按textField.frame.size.width

限制它

属性。

这意味着在扩展到某个宽度后,限制为输入

答案 3 :(得分:0)

我也遇到了同样的问题。我必须设置文本字段及其相邻uilabel的左右约束,以确保在输入大量文本后我的文本字段不会自行调整大小。这是Autolayout的一个问题。尝试了以上所有解决方案,无法通过上述解决方案进行修复。