2012-05-30 56 views
3

我的應用程序中的UITextFields已經定義了佔位符文本(在Interface Builder中),並且我無法使這些字段獲得焦點(即顯示鍵盤並允許編輯)我點擊佔位符文本佔用的區域。如果我點擊佔位符文本區域外的文本區域(雖然仍然在文本文件本身的範圍內),它就像正常一樣(即彈出鍵盤並且我可以編輯文本區域的內容)。我怎樣才能解決這個問題?UITextField - 爲leftView添加UIView - 無法獲取焦點

謝謝。

編輯1

好吧,我想我已經得到了它。我還爲這些UITextFields的「leftView」屬性設置了一個空白視圖。如果我刪除它,您可以觸摸佔位符文本區域中的UITextFields,並按預期做出反應;不過,我需要這個視圖。如果您將此隔離視圖的背景顏色更改爲紅色,您可以看到它完全不妨礙,所以我不知道發生了什麼問題。

爲什麼此代碼會導致此問題?

謝謝。

+(UIView*)getTextFieldLeftSpacerViewWithBackgroundColor:(UIColor*)backgroundColor andHeight:(CGFloat)height 
{ 
    UIView *leftWrapper = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 8.0f, height)]; 
    leftWrapper.autoresizingMask = UIViewAutoresizingNone; 
    [leftWrapper setOpaque:YES]; 
    if(backgroundColor){leftWrapper.backgroundColor = backgroundColor;} 
    else{leftWrapper.backgroundColor = [UIColor clearColor];} 
    return [leftWrapper autorelease]; 
} 

+(void)setTextFieldLeftSpacerForTextFieled:(UITextField*)textField 
{ 
    if(textField) 
    { 
     UIView *spacer = [MYViewController getTextFieldLeftSpacerViewWithBackgroundColor:nil andHeight:textField.bounds.size.height]; 
     textField.leftView = spacer; 
     textField.leftViewMode = UITextFieldViewModeAlways; 
    } 
} 
+0

你是如何設置的佔位符文本? – jlehr

+0

因此,首先,當我將UITextField拖放到Interface Builder上時,其中沒有默認文本。我正在使用XCode 4.3.2。你在GUI Designer中分配文本嗎?告訴我更多:-) – trumpetlicks

+0

@trumpetlicks佔位符文本可以直接在IB的屬性檢查器中設置。 OP說他把它放在IB中。順便說一句,佔位符與默認文本不同。 – jlehr

回答

1

我放棄了這種方法。我選擇了UITextField的子類併爲UITextField中的文本邊界提供偏移CGRects,而不是使用不可見視圖來偏移文本。下面的SO職位是非常有幫助的:

Indent the text in a UITextField

5

恰好碰到了同樣的問題,不想子類,剛使用方法:

leftWrapper.userInteractionEnabled = NO;