UITextfield文本正在进行编辑

时间:2013-08-31 00:06:03

标签: iphone ios objective-c xcode uikit

当我的UITextField成为第一响应者(在编辑时)时,文本会略微向下移动,并且字符之间的间距会略微增加。在辞职第一响应者(键盘消失)后,角色移回原始位置。起初我认为这是一个字体问题,因为我使用自定义字体,但当我使用系统字体或其他自定义字体时会发生同样的事情。

请查看下面的图片。第一个是键盘向下,第二个是键盘向上。可能很难看出,因为方差很小,但键盘向上状态显示字符向下移动并稍微分开。

enter image description here

enter image description here

9 个答案:

答案 0 :(得分:4)

在xib中,将textfield的borderStyle设置为TextBorderStyleNone以外的任何值。在代码中,将textfield的borderStyle显式设置为TextBorderStyleNone。

我无法找出原因,但它似乎是初始化程序错误。它在其他代码中工作正常,它不会通过xib的插座初始化UITextField。

在xib中将textfield的borderStyle设置为TextBorderStyleNone时,即使在代码中将borderStyle设置为TextBorderStyleNone,问题仍然存在。接下来可能会出现某种“布局如何”的问题。由价值变化引发的东西。

答案 1 :(得分:3)

选择“adjust to fit”属性可在UITextField中设置属性adjustsFontSizeToWidth。

具有此属性(UITextField Apple Documentation):

  

通常,文本字段的内容是使用您在font属性中指定的字体绘制的。但是,如果此属性设置为YES,   并且text属性中的内容超出了文本字段的边界   矩形,接收器开始减小字体大小,直到字符串   适合或达到最小字体大小。文字缩小了   基线。

     

此属性的默认值为NO。如果将其更改为YES,   您还应该通过修改来设置适当的最小字体大小   minimumFontSize属性。

我会先尝试取消选中此项并查看是否会阻止它,然后按照文档建议操作,否则将minimumFontSize属性设置为低,这可能也会导致问题。

此问题可能是蓝色“正在编辑”光标出现的结果。文本的基线(reference)是文本的底部。你的文字通过向下推“沿着基线”缩小,这在最小的方向上倾向于最小化.FizeSize / adjustsFontSizeToWidth问题。

答案 2 :(得分:3)

如果你强行制作UITextField第一响应者,请在viewDidAppear中执行:而不是viewDidLoad ...这解决了我的问题......

答案 3 :(得分:2)

检查关闭"剪切到界限"我的故事板中的textField对我来说很好。

答案 4 :(得分:1)

Min Font Size属性设置为Interface Builder中为我工作的字体大小

答案 5 :(得分:0)

你的UITextField大小可能在高度方面略微过小。尝试手动调整大小,使其高一个像素或两个像素。或者在XIB编辑器中选择它并使用“编辑器”菜单中的“大小以适合内容”。应该将文本字段设置为正确的大小,以便不会发生文本转换。

答案 6 :(得分:0)

您应该在Text属性之前设置Font属性。

答案 7 :(得分:0)

在故事板中更改控制下的垂直对齐方式对我而言。

答案 8 :(得分:0)

我的问题与alignment中的错误UIStackView有关。

UITextField放入UIStackView时,请确保正确设置其alignment,否则自动布局不会弄清楚如何正确放置视图。


就我而言,我必须将其设置为.leading

stackView.alignment = .leading