<分区>
<分区>
当键盘不在屏幕上时,我以编程方式将文本附加到 UITextField
(因此该字段中没有键入指示器)。一旦文本填满该字段,它将继续添加文本但不会滚动到末尾以显示最后添加的字符。相反,它会截断文本并在末尾添加省略号 (...)。
如何确保以编程方式添加的最后一个字符可见?
当文本字段较宽时,该解决方案需要在横向(和 iPad)中工作,并且用户还需要能够通过屏幕键盘在此字段中输入文本。 [请注意,当键盘打开时它会自动滚动到末尾(文本字段是 firstResponder
)并且我以编程方式附加一个字符。]
请注意,这个问题之前已经被问过(因此这个问题被标记为重复的原因)但是给定的解决方案将不起作用,因为 sizeWithFont:constrainedToSize:lineBreakMode:
已被弃用。即使我使用它,占位符文本也会在通过清除 (X) 按钮清除字段后变为右对齐。它也不起作用,因为魔数(Magic Number)是硬编码的,因此它不适用于不同大小的文本字段。
Ashley 提供的答案很好,但(对我而言)也行不通,因为用户还需要能够通过系统键盘在字段中输入文本。
这是我添加一个字符的简单代码行:
self.textField.text = [self.textField.text stringByAppendingString:character];
这是当文本太长而无法放入可见字段时发生的情况:
我想知道 UITextView
是否更适合使用,但我想我会遇到同样的情况 - 需要滚动到底部,当它不合适时。
非常感谢您帮助解决这个问题,我相信那些偶然发现这个问题的人也会。
最佳答案
这些答案应该有帮助: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 = [UIColorclearColor];
将隐藏光标/插入符
关于ios - 以编程方式附加字符后在 UITextField 中显示文本结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22944284/