[英]UITextfield text is moving on edit
當我的 UITextField 成為第一響應者(編輯時)時,文本會略微向下移動,並且字符之間的間距會略微增加。 退出第一響應者(鍵盤消失)后,角色回到原來的位置。 起初我認為這是一個字體問題,因為我使用的是自定義字體,但是當我使用系統字體或其他自定義字體時,也會發生同樣的事情。
請檢查下面的圖片。 第一個是鍵盤朝下,第二個是鍵盤朝上。 可能很難看到,因為差異很小,但是鍵盤向上狀態顯示字符向下移動並稍微分開。
在 xib 中,將文本字段的 borderStyle 設置為 TextBorderStyleNone 以外的任何值。 並在代碼中,將文本字段的 borderStyle 顯式設置為 TextBorderStyleNone。
我不知道為什么,但這似乎是初始化程序錯誤。 它在其他代碼中工作正常,這些代碼不會通過來自 xib 的出口初始化 UITextField。
當在xib處將textfield的borderStyle設置為TextBorderStyleNone時,即使在代碼中將borderStyle設置為TextBorderStyleNone,問題仍然存在。 其后可能是某種“layoutIfNeeded”內容,由值更改觸發。
選擇“adjust to fit”屬性設置 UITextField 中的屬性 adjustsFontSizeToWidth。
具有此屬性( UITextField Apple Documentation ):
通常,文本字段的內容是使用您在 font 屬性中指定的字體繪制的。 但是,如果此屬性設置為 YES,並且 text 屬性中的內容超出了文本字段的邊界矩形,則接收器開始減小字體大小,直到字符串適合或達到最小字體大小。 文本沿基線收縮。
此屬性的默認值為 NO。 如果將其更改為 YES,則還應通過修改 minimumFontSize 屬性來設置適當的最小字體大小。
我會先嘗試取消選中它,看看是否會阻止它,然后按照文檔建議將 minimumFontSize 屬性設置得更低,否則這也可能導致問題。
此問題可能是藍色“正在編輯”光標出現的結果。 文本的基線(參考)是文本的底部。 通過向下推,您的文本正在“沿着基線”縮小,這更傾向於將其作為 minimumFontSize/adjustsFontSizeToWidth 問題的方向。
如果您強制使 UITextField 成為第一響應者,請在 viewDidAppear: 而不是 viewDidLoad 中進行...這為我解決了問題...
在我的故事板檢查關“剪輯到邊界”文本框的為我工作得很好。
您可能已經將 UITextField 的大小設置為在高度方面稍微太小了。 嘗試手動調整它的大小,使其高一兩個像素。 或者在 XIB 編輯器中選擇它並使用編輯器菜單中的“大小以適應內容”。 這應該將文本字段設置為正確的大小,以便不會發生這種文本移動。
將Min Font Size
屬性設置為Interface Builder
的字體大小對我有用
我的問題與UIStackView
錯誤alignment
有關。
當您將UITextField
放入UIStackView
,請確保正確設置其alignment
,否則自動布局將無法確定如何正確定位您的視圖。
就我而言,我必須將其設置為.leading
。
stackView.alignment = .leading
您應該在 Text 屬性之前設置 Font 屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.