2011-12-05 38 views
2

這聽起來可能是一個新手問題,但我是iOS開發新手。鍵盤在UITextField上沒有被解僱

平臺:iPad

我有一個的UITextField一個UITableView,讓說,他們兩個。 當按下第一個虛擬鍵盤時應該出現,但是當用戶在第二個UITextField上點擊時,虛擬鍵盤應該被隱藏並且應該顯示數據選擇器視圖。

所以在這裏,我是如何做到的。

-(void) textFieldDidBeginEditing:(UITextField *)textField { 
    if (textField.tag == PICKER_VIEW_TAG) { 
     [textField resignFirstResponder]; 
    } else { 
     ... 
    } 
} 

-(void) textFieldDidEndEditing:(UITextField *)textField 
{ 
    if (textField.tag != PICKER_VIEW_TAG) { 
     ... 
    } 
} 

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
{ 
    if (textField.tag == PICKER_VIEW_TAG) { 
     [self countriesPickerView]; 
    } 
    return YES; 
} 

-(BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    if (textField.tag == PICKER_VIEW_TAG) { 
     [textField resignFirstResponder]; 
    } else { 
     ... 
    } 
    return YES; 
} 

所以,現在的問題,當我點擊首次在第一的UITextField它顯示鍵盤,但是當我切換到第二個它沒有隱藏。爲什麼?以及如何解決這個問題?

更新:相應的textField沒有被選中,但是,即辭職發生,對嗎?但鍵盤不隱藏......爲什麼會發生這種情況?

+0

您是否設置了texfields的委託並確保委託方法被調用? 'textfield.delegate = self;' – matsr

+1

是的,我做到了...... – deimus

回答

1

問題出在您的textFieldShouldReturn。如果你想讓它完成這個動作,讓它在退出第一個響應者時返回。

[textField resignFirstResponder]; 
return YES; 
+0

更新後的代碼在使鍵盤出現在第一個UITextField上後仍然有相同的效果,當我點擊第二個鍵盤時沒有隱藏。 – deimus

+0

我假設你有你的頭文件中添加你的UITextFieldDelegate所以它知道調用這些重寫的方法? –

+0

當然,我已經將它添加到標題 – deimus

1

設置上UITextFieldinputView屬性顯示比其他鍵盤觀點來接收輸入。在這種情況下,您可以將文本字段的inputView設置爲UIDatePicker的實例。選取器將自動顯示相同的鍵盤動畫,並刪除一堆代碼。贏/贏。