2013-08-31 78 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工作對我來說