我以编程方式将文本附加到UITextField
,而键盘不在屏幕上(因此字段中没有输入指示符)。一旦文本填满该字段,它将继续添加文本,但不会滚动到结尾以显示添加的最后一个字符。相反,它会截断文本并在末尾添加省略号(...)。
如何确保以编程方式添加的最后一个字符可见?
当文本字段较宽时,解决方案需要在横向(和iPad)中工作,用户还需要能够通过屏幕键盘在此字段中输入文本。 [注意,当键盘启动时它会自动滚动到结尾(文本字段为firstResponder
)并且我以编程方式附加一个字符。]
请注意,此问题之前已被提出(因此此问题被标记为重复),但由于sizeWithFont:constrainedToSize:lineBreakMode:
已弃用,因此给定的解决方案无效。即使我使用它,在通过清除(X)按钮清除字段后,占位符文本也会右对齐。它也不会起作用,因为一个神奇的数字是硬编码的,所以它不适用于不同大小的文本字段。
Ashley提供的答案很好,但也不适用(对我来说),因为用户还需要能够通过系统键盘输入文本。
这是我附加一个字符的简单代码:
self.textField.text = [self.textField.text stringByAppendingString:character];
这是当文本太长而无法放入可见字段时发生的情况:
我想知道UITextView
是否会更好用,但我想我会遇到同样的情况 - 当它不适合时需要滚动到底部。
感谢您帮助解决这个问题,我确信那些偶然发现这个问题的人也会。
答案 0 :(得分:1)
这些答案应该有所帮助:UITextField not scrolling horizontally,UITextField functionality with no keyboard
self.pasteboardField.text = [self.pasteboardField.text stringByAppendingString:character];
UITextPosition *end = [self.pasteboardField endOfDocument];
UITextRange *endrange = [self.pasteboardField textRangeFromPosition:end toPosition:end];
[self.pasteboardField setSelectedTextRange:endrange];
UIView *dummyView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];
self.pasteboardField.inputView = dummyView;
[self.pasteboardField becomeFirstResponder];
上面会将光标移动到文本字段的末尾而不显示键盘,但会显示光标/插入符号。
self.pasteboardField.tintColor = [UIColor clearColor];
将隐藏光标/插入符号