UITextfield文本正在编辑中

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

请检查下面的图像。 第一个是键盘向下,第二个是键盘向上。 可能很难看到,因为方差很小,但键盘上的状态显示人物向下移动并略微分开。

在这里输入图像说明

在这里输入图像说明

select“调整到适合”属性设置UITextField中的属性adjustsFontSizeToWidth。

有这个属性( UITextField Apple文档 ):

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

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

我会尝试先取消选中这个,看看是否会阻止它,然后按照文档的build议,并设置minimumFontSize属性,否则,这也可能会导致问题。

这个问题可能是蓝色“正在编辑”光标出现的结果。 文本( 参考 )的基线是文本的底部。 您的文本通过向下按压“沿着基线”收缩,这更加强烈地依赖于它的最小字体大小/ adjustsFontSizeToWidth问题。

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

我无法弄清楚为什么,但似乎是初始化程序错误。 在其他代码中,它不能通过xib的sockets来初始化UITextField。

在xib中将textfield的borderStyle设置为TextBorderStyleNone时,即使在代码中将BorderStyle设置为TextBorderStyleNone,问题依然存在。 它可能跟着某种'layoutIfNeeded'的东西,由价值变化触发。

在我的Storyboard中closures textField的“Clip to Bounds”function对我来说很好。

如果你是强制使UITextField第一响应者,做viewDidAppear:而不是viewDidLoad …这解决了我的问题…

您可能已经将UITextField的大小设置得稍微高一点。 尝试手动调整它的大小,所以它是一个像素或两个更高。 或者在XIB编辑器中select它并使用“编辑器”菜单中的“大小来适应内容”。 这应该设置正确的大小的文本字段,这样的文字转移不会发生。

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

在我的Interface Builder设置Min Font Size属性等于字体大小