2012-05-27 50 views
1

我需要設置文本的寬度有限,我UITextField,因爲我把對UITextField如何設置文本的有限寬度的UITextField

看圖像的頂部按鍵:

enter image description here

如何做到這一點?

+0

這是一個UITableViewCell?如果是這樣,它有一個簡單的方法來與accessoryView做到這一點。 – apple16

+0

不,不幸的是它不是 –

回答

2

您可能需要繼承UITextField並覆蓋editingRectForBounds:方法。嘗試這樣的東西..當然,相應地調整值。

- (CGRect)editingRectForBounds:(CGRect)bounds { 
     return CGRectInset(bounds , 10 , 10); 
} 

接受這個答案,如果它是你的問題的解決方案。

+0

謝謝。這對我有效。 –

1

您可以鏈接事件editingChanged的UITextView中的下列方法:

- (IBAction)textFieldChanged:(id)sender{ 
    if([sender.text length]>6){ 
     sender.text = [sender.text substringToIndex: 6]; 
    } 
} 
+0

但是你也應該保存用戶輸入過去的字符6 ... – apple16

+0

+ 1 - 我之前做過類似的事情。但是,如果您不使用等寬字體,則必須小心,因爲這樣並不總是有效。 – WendiKidd

+0

使用此解決方案,您將文本限制爲6個字符,我不認爲這是需要的。他只想改變插圖,所以角色不被按鈕覆蓋。看到我的解決方案.. – skram

0

只需添加到這一點,你可能會想同時重寫editingRectForBoundstextRectForBounds以便文本正確顯示時編輯和不編輯(見this post)。在斯威夫特,這可能是:

class MyUITextField: UITextField { 

    override func editingRectForBounds(bounds: CGRect) -> CGRect { 
     return CGRectInset(bounds, 18, 0) 
    } 

    override func textRectForBounds(bounds: CGRect) -> CGRect { 
     return CGRectInset(bounds, 18, 0) 
    } 
} 
相關問題