2012-12-18 17 views
1

我有UITextField,並且當推送UIPickerView出現時選擇一個值。一旦選擇了一個值,我怎樣才能讓UIPickerView解散。有人在另一個線程告訴我resignFirstResponder的文本框,但我的代碼不工作。有任何想法嗎?注:我有兩個文本字段和用戶界面選擇器,這就是爲什麼我有'如果''其他'的聲明。如何解僱連接到UITextField的UIPicker

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    if (textField == self.ageTextField) 
    { 
     [ageTextField resignFirstResponder]; 
     [agePickerView removeFromSuperview]; 
     return YES; 
    } 
    else 
    { 
     [relationshipTextField resignFirstResponder]; 
     [relationshipPickerView removeFromSuperview]; 
     return YES; 
    } 
} 
+2

UIPicker無關與textFieldShouldReturn或resignFirstResponder。如果您在popover中顯示選取器,請關閉它,或者如果您正在推動選取器彈出它。 –

+0

@Rahul我完全同意。 +1給你的評論 –

+0

對於resignFirstResponder的工作,你必須將選擇器分配給文本框的inputView屬性:) –

回答

0

請嘗試下面的代碼,它可以解決您的問題。

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    if (textField == self.ageTextField) 
    { 
     [ageTextField resignFirstResponder]; 
    } 
    else 
    { 
     [relationshipTextField resignFirstResponder]; 
    } 
    [pickerView removeFromSuperview]; 
    return YES; 
} 

或按照以下方法UIPickerView辭職你的鍵盤。

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 
+0

它沒有工作。 [pickerView removeFromSuperview]有一些錯誤。 – user1681673

+0

pickerView表示您在其上填充UIPickerView的視圖。 – Girish

+0

好吧,我試過了,它仍然沒有工作。也許我沒有在模擬器中正確測試它。我需要點擊UI Picker的模擬器才能解僱? – user1681673

0

請按照以下方法嘗試在UIPickerViewDelegate方法中退出UITextField。

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { 
    [self.ageTextField resignFirstResponder]; 
    pickerView.hidden = YES; //Show the pickerview again when you neeed it 
} 
+0

當我實現你的代碼時,當我單擊UI文本字段時,UI Picker根本沒有出現。雖然我可能會把它放在錯誤的地方。 – user1681673

0

落實UIPickerViewDelegate協議並實現下面的方法:

- (void) pickerView: (UIPickerView*) pickerView 
     didSelectRow: (NSInteger)  row 
     inComponent: (NSInteger)  component 
{ 
    [self.ageTextField resignFirstResponder]; 
}