ios - 以编程方式附加字符后在 UITextField 中显示文本结尾

标签 ios objective-c uitextfield truncate ellipse

<分区>

当键盘不在屏幕上时,我以编程方式将文本附加到 UITextField(因此该字段中没有键入指示器)。一旦文本填满该字段,它将继续添加文本但不会滚动到末尾以显示最后添加的字符。相反,它会截断文本并在末尾添加省略号 (...)。

如何确保以编程方式添加的最后一个字符可见?

当文本字段较宽时,该解决方案需要在横向(和 iPad)中工作,并且用户还需要能够通过屏幕键盘在此字段中输入文本。 [请注意,当键盘打开时它会自动滚动到末尾(文本字段是 firstResponder)并且我以编程方式附加一个字符。]

请注意,这个问题之前已经被问过(因此这个问题被标记为重复的原因)但是给定的解决方案将不起作用,因为 sizeWithFont:constrainedToSize:lineBreakMode: 已被弃用。即使我使用它,占位符文本也会在通过清除 (X) 按钮清除字段后变为右对齐。它也不起作用,因为魔数(Magic Number)是硬编码的,因此它不适用于不同大小的文本字段。

Ashley 提供的答案很好,但(对我而言)也行不通,因为用户还需要能够通过系统键盘在字段中输入文本。

这是我添加一个字符的简单代码行:

self.textField.text = [self.textField.text stringByAppendingString:character];

这是当文本太长而无法放入可见字段时发生的情况:

enter image description here

我想知道 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/

上一篇:ios - 使用 iBeacon 触发音频

下一篇:ios - iAd 卡住游戏场景

相关文章:

ios - 如何在 swift 中使用文本字段文本 "Amount"向表格 View 添加额外的行

ios - 编辑后 UITextField 检查为空

ios - 整个应用程序中只有一个 View 上的导航栏

iphone - 选择图像的一部分(剪裁)

iphone - iOS 上的延迟执行技术

objective-c - 如何在 RestKit 中发出同步请求?

iphone - 每分钟点击次数 iOS 编程

ios - GameplayKit 中的 GKS 文件是什么?

ios - 我可以在 NSURLSession 创建后更新其配置中的 cookie 吗?

ios - 检测文本字段中的位置和内容发生变化