2016-12-16 77 views
0

我有一個UITextField,旁邊有一個標籤,上面寫着「米」。這個想法是,你可以在文本框中鍵入一個數字,並在它旁邊顯示「米」字樣。文本字段沒有邊框,因此當您未編輯文本字段時,它將看起來像一行文本。如何在輸入時將UITextField寬度調整爲文本?

爲此,我需要將文本字段的寬度作爲文本的寬度。所以在你輸入時它需要變得更寬。但是,輸入時不會發生這種情況。但是,如果旋轉設備,尺寸會根據內容進行調整。所以基本上我需要在你旋轉時觸發任何觸發器來獲得我想要的。

我試過很多的東西在UIControlEvents.editingChanged方法類似setNeedsLayoutsetNeedsDisplaylayoutSubViews()setNeedsUpdateConstraints(),但沒有運氣。

另一種方法是使用sizeToFit(),然後將frame.size.width設置爲文本字段的寬度限制。這確實奏效,但只是第一次編輯。當您第二次編輯時,sizeToFit()始終以某種方式返回。

任何想法?

更新:我結束了使用不同的方法。我將文本字段設置爲全寬,並將計量標籤放在上面。當您輸入時,它會計算文本的寬度,並通過更改左側約束常數來相應地移動儀表標籤。這樣標籤總是在輸入的數字旁邊。

我仍然沒有找到一種方法來使文本字段的寬度變化,因爲你鍵入時不動作所有的馬車,但我不再需要它了。

+0

請檢查http://stackoverflow.com/questions/18236661/resize-a-uitextfield-while-typing-by-using-autolayout我認爲這是同樣的問題。 –

回答

0

我想你應該執行內部

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool

此功能只是決定是否將新輸入的字符應在文本字段的內容查看的結束追加。每次用戶輸入時都會調用此函數。

我認爲UIControlEvents.editingChanged只在textField獲得焦點或失去焦點時通知您,但當值發生變化時纔會通知您。

+0

@Janneman。我希望這對你有幫助。編寫項目時遇到同樣的問題。我以編程方式解決它。 –

相關問題