簡體   English   中英

UITextfield 文本正在編輯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM