4

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

有点儿:

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

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

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

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

为了说明问题:当我使用自定义 UIButtons 输入文本时,文本被截断 手动按钮

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

4

2 回答 2

1

如果您在 iOS7 上遇到此问题,我在受到这篇文章的启发后设法解决了它。在我的情况下,我有一个用于输入电子邮件地址的字段,并且在到达边缘后,用户可以继续输入,但文本将是不可见的(场外)。

首先,向您的 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

希望能帮助到你!

于 2013-11-18T22:08:29.147 回答
0

您必须添加 UITextview 并将行数限制为 2。Textfield 不适用于两行。Textview 与文本字段相同,但代表和某些属性不同。

于 2013-08-08T06:38:27.430 回答