2011-03-17 93 views
1

大圖:這是我想要完成的。發送短信給某人。 UI/UX應該看起來類似於這樣的: enter image description here我似乎無法重寫UITextField leftViewRectForBounds方法

所以,目前,我正在使用3個單元的UITableView。前兩個(「To:」和「From:」)高44px。我在UITableViewCell的「contentView」中放置了一個UITextField。一切都很好。我可以讓用戶編輯單元格的內容。

現在,我使用leftView屬性來顯示帶有文本「To:」的UILabel。它可以工作,但「To」標籤總是在UITextField的左側(如下圖所示): enter image description here

所以根據SDK文檔。左視圖模式是通過這種方法決定: leftViewRectForBounds:

根據討論:

你不應該直接調用此方法 。如果要將 左側覆蓋視圖置於不同的 位置,則可以覆蓋此方法 並返回新的矩形。

所以,我試圖重寫沒有太大的成功。如果有人有任何代碼片段,我將不勝感激。在底部的圖片中,我將「發件人」設置爲「發件人」,這是「黑客入侵」的一小部分,但我想正確地做。這是我已經嘗試過:

// override leftViewRectForBounds method: 
- (CGRect)leftViewRectForBounds:(CGRect)bounds{ 
    CGRect leftBounds = CGRectMake(bounds.origin.x + 30, 0, 45, 44); 
    return leftBounds; 
} 

和它的小變種,它似乎並不工作,所以任何幫助表示讚賞。謝謝!!!

回答

4

你可以有你的類像下面

@interface MyTextField : UITextField 
{ 
    //Declare your variable here  
} 
@end 

@implementation MyTextFiled 

// override leftViewRectForBounds method: 
- (CGRect)leftViewRectForBounds:(CGRect)bounds{ 
    CGRect leftBounds = CGRectMake(bounds.origin.x + 30, 0, 45, 44); 
    return leftBounds; 
} 

使用myTextField將代替的UITextField。

+1

完美的作品。謝謝! – okysabeni 2011-03-24 05:43:28

0

如果您還沒有將textField作爲customtextfield,則該方法將不會被調用。要覆蓋此方法,您必須採用繼承了UITextField的自定義textField類。