我正在尝试制作一个小型计算器应用。 按下UIButton时,Button标题将添加到UITextField。
有点:
myuitextfield.text = [myuitextfield.text stringByAppendingString:[button currentTitle];
当我到达文本字段的末尾时,文本会被截断。如何禁用此功能,以便文本字段自动开始滚动并允许添加更多字符?
我在Interface Builder中尝试了所有可能的选项,没有任何运气。 是不是UITextField应该自动滚动?当使用本机键盘并输入文本时,我可以看到此行为。
我选择了UITextField,因为我只需要1行。
说明问题: 当我使用自定义UIButtons输入文本时,文本会被截断
当我点击UITextField并使用键盘输入文本时,我可以输入无限制的文本,文本不会被截断。
答案 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;
}
注意:
希望它有所帮助!
答案 1 :(得分:0)
你必须添加UITextview并将行数限制为2.Textfield不能使用两行.Textview与textfields相同,除了委托和一些属性不同。