2012-11-05 59 views
0

當用戶選擇UITextField時,我試圖隱藏鍵盤。我目前有三個文本字段:兩個UIPickerView(由同一個選擇器控制)和一個文本輸入字段。當我點擊「返回」或在背景上時,鍵盤會通過resignFirstResponder呼叫消失。當選擇另一個具有UIPickerView錯誤的UITextField時隱藏鍵盤

問題:

當我正在編輯的文本輸入框,然後立即選擇UITextField W/UIPickerView功能,鍵盤不會消失。我覺得我已經嘗試每一個解決方案,並通過我的頭靠在牆上跳動......

CODE:

-(void)textFieldDidBeginEditing:(UITextField *)textField{ 
    [pickerView setHidden:YES]; 
    if (fldQuiver.editing == YES) { 
     [fldTitle resignFirstResponder]; 
     [fldQuiver resignFirstResponder]; 
     [pickerView setHidden:NO]; 
     variabla = 1; 
    }else if (fldCategory.editing == YES) { 
     [fldTitle resignFirstResponder]; 
     [fldCategory resignFirstResponder]; 
     [pickerView setHidden:NO]; 
     variabla = 2; 
    } 
    NSLog(@"variabla %d",variabla); 
    [pickerView reloadAllComponents]; 
} 

任何幫助,將不勝感激。提前致謝。

編輯的代碼王子:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;  // return NO to disallow editing. 
{ 
    //set logic for picker view here 
    if (textField == fldQuiver) 
    { 
     variabla = 1; 
    } 
    else if (textField == fldCategory) { 
     variabla = 2; 
    } 
    else 
    { 
    } 
    NSLog(@"variabla %d",variabla); 
    [pickerView reloadAllComponents]; 

    if (textField == fldQuiver) 
    { 
     [fldTitle resignFirstResponder]; 
     [pickerView setHidden:NO]; 
     return NO; 
    } 
    else if (textField == fldCategory) { 
     [fldTitle resignFirstResponder]; 
     [pickerView setHidden:NO]; 
     return NO; 
    } 
    else 
    { 
     [pickerView setHidden:YES]; 
     return YES; 
    } 
} 

ALSO:我有 「合成」,並宣佈@propertyfldQuiverfldCategory。我有IBOutletfldTitle,fldQuiver,fldCategory

pickerView加載了一個基於變量的數組。

回答

2

使用textFieldShouldBeginEditingdelegate方法是:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;  // return NO to disallow editing. 
{ 
    //set logic for picker view here 
    if (textField == fldQuiver) 
    { 
     //picker view hidden or show here 
     return NO; 
    } 
    else if (textField == fldCategory) { 
     //picker view hidden or show here 
     return NO; 
    } 
    else 
    { 
     return YES; 
    } 

} 
+0

我實現了這個代碼 - 請參閱我的編輯。它不加載選擇器的內容,當我編輯文本輸入字段(fldTitle),然後選擇fldCategory或fldQuiver鍵盤仍然顯示。 –

+0

另外,不知道你的意見是什麼意思,所以我可能做錯了...對不起,因爲我有限的知識 –

+0

pickerview加載了一個基於variabla的數組。 –

0

組委託文本字段

textField.delegate=self; 

-(void)textFieldDidBeginEditing:(UITextField *)textField 
{ 
........... 
[textField resignFirstResponder]; //it common for all text field,so not use multi resignFirstResponder 
............ 
} 
+0

我在哪裏設置委託(1號線) –

+0

組委託旁邊的文本框和設置的分配文本委託在.h文件中,前@interface文件名:UIViewController NANNAV