UITextField不能水平滚动

时间:2013-08-08 06:34:42

标签: uitextfield horizontal-scrolling

我正在尝试制作一个小型计算器应用。 按下UIButton时,Button标题将添加到UITextField。

有点:

myuitextfield.text = [myuitextfield.text stringByAppendingString:[button currentTitle];

当我到达文本字段的末尾时,文本会被截断。如何禁用此功能,以便文本字段自动开始滚动并允许添加更多字符?

我在Interface Builder中尝试了所有可能的选项,没有任何运气。 是不是UITextField应该自动滚动?当使用本机键盘并输入文本时,我可以看到此行为。

我选择了UITextField,因为我只需要1行。

说明问题: 当我使用自定义UIButtons输入文本时,文本会被截断 Manual Buttons

当我点击UITextField并使用键盘输入文本时,我可以输入无限制的文本,文本不会被截断。 System Keyboard

2 个答案:

答案 0 :(得分:1)

如果您在iOS7上遇到此问题,我已经设法在this post启发后修复它。在我的情况下,我有一个用于输入电子邮件地址的字段,在到达边缘后,用户可以继续输入,但文本将是不可见的(场外)。

首先,向您的UITextField添加一个回调,以便您可以跟踪对该字段的文本更改:

[self.field addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];

然后在输入字符串时键入输入字符串的大小(以像素为单位),并在到达字段区域边缘时从左向右更改文本对齐方式:

- (void)textFieldDidChange:(NSNotification *)aNotif{

float maxNumPixelsOnScreen = 235; // Change this value to fit your case
CGSize maximumSize = CGSizeMake(maxNumPixelsOnScreen + 10, 1);
NSString *aString = self.field.text;
CGSize stringSize = [aString sizeWithFont:fieldFont
                           constrainedToSize:maximumSize
                               lineBreakMode:NSLineBreakByWordWrapping];

self.field.textAlignment = NSTextAlignmentLeft;
if (stringSize.width >= maxNumPixelsOnScreen)
    self.field.textAlignment = NSTextAlignmentRight;
}

注意:

  • self.field 是违规的UITextField
  • maximumSize:我将10的宽度稍微超过定义的限制
  • fieldFont 是用于呈现文本字段的UIFont

希望它有所帮助!

答案 1 :(得分:0)

你必须添加UITextview并将行数限制为2.Textfield不能使用两行.Textview与textfields相同,除了委托和一些属性不同。