2013-08-31 54 views
14

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

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

enter image description here

enter image description here

+2

你能告诉更多的代码?它设置了哪些属性?它如何添加到视图? – AdamG

+0

我通过一个nib文件将它添加到视图中,并且我没有以编程方式执行任何操作。我有一个自定义字体,中心对齐,没有边框,没有清晰的按钮,调整到适合和其他一切只是默认设置。 –

+0

您是否找到解决方案? – AdamG

回答

0

你可能已经调整了您的UITextField稍微偏小高度方向。尝试手动调整它的大小,以便它是一个像素或两个更高。或者在XIB编辑器中选择它并使用“编辑器”菜单中的“尺寸以适合内容”。这应该将文本字段设置为合适的大小,以避免文本移位。

+0

我尝试调整UITextField和“大小以适应内容”,没有运气。 –

2

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

具有此特性(UITextField Apple Documentation):

通常情况下,文本字段的内容绘制您在字体属性来指定字体。但是,如果此属性设置为YES,则 和文本属性中的内容超过文本字段的边界 矩形,接收器将开始减小字体大小,直到字符串 适合或达到最小字体大小。文字沿着 基线缩小。

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

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

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

+0

谢谢你的回应。将adjustsFontSizeToWidth属性设置为NO(取消选中)或修改最小字体大小可解决问题。 –

+0

设置minimumfontsize时,是否使其与您的字体大小相同? – AdamG

+0

我只是试过,无济于事。我发现这篇文章有助于水平定位,但文本间距仍然会发生变化。 http://stackoverflow.com/questions/6351340/using-a-custom-font-in-a-uitextfield-causes-it-to-shift-slightly-when-accessed –

0

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

+0

这对问题没有任何影响。 –

1

如果你用力做的UITextField第一个响应,这样做在viewDidAppear:不是viewDidLoad中......这解决了我的问题......

+0

这确实是固定它,应该标记为答案。 –

2

在XIB,设置文本框的的borderStyle比TextBorderStyleNone任何价值。并且在代码中,将textfield的borderStyle显式设置为TextBorderStyleNone。

我不知道为什么,但它似乎是初始化程序错误。它在其他代码中工作正常,它不会通过xib插座初始化UITextField。

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

2

检查OFF我的故事板中textField的“Clip to Bounds”工作正常。

+0

这对我有帮助。正如上面对OT的评论所指出的那样,我注意到这是在iOS 10.0(但不是9.3.x)使用​​不可见边框样式时发生的。默认边框样式没有问题。 – Jonny

1

设置Min Font Size属性等于字体大小Interface Builder工作对我来说