2012-05-12 120 views
0

我有3個UITexfield,用戶可以填寫前兩個,但最後一個是類別字段,並在點擊時顯示UIPickerView。UIPickerView:鍵盤不隱藏

我已經設法到目前爲止做的是:

  • 在CATERGORY文本框,用戶點擊 - >選擇器視圖顯示
  • 然後在另一個文本框,用戶點擊 - >選擇器視圖消失和鍵盤顯示

但知道我想隱藏鍵盤時,用戶再次點擊類別文本框並顯示選擇器視圖。

這是我到目前爲止有:

- (void)textFieldDidBeginEditing:(UITextField *)textField { 
    if(textField == categoryTextField){ 
     [categoryTextField resignFirstResponder]; 
     [UIView beginAnimations:@"picker" context:nil]; 
     [UIView setAnimationDuration:0.3]; 
     pickerView.transform = CGAffineTransformMakeTranslation(0,-236); 
     [UIView commitAnimations]; 
    }else{ 
     [UIView beginAnimations:@"picker" context:nil]; 
     [UIView setAnimationDuration:0.3]; 
     pickerView.transform = CGAffineTransformMakeTranslation(0,236); 
     [UIView commitAnimations]; 
    } 
} 

但它不工作。任何想法爲什麼?

+0

你可能想看看resignFirstResponder/becomeFirstResponder方法。我有一個鍵盤和pickerView類似的問題。 – geminiCoder

回答

2

你讓太困難了。將選取器視圖設置爲文本字段的輸入視圖,操作系統將爲您處理動畫。當每個字段成爲第一響應者時,將顯示適當的輸入視圖(文本鍵盤的默認鍵盤,第三個鍵盤的選擇器)。你不需要自己做任何動畫。

+0

好的,這有效,但我放鬆動畫,任何想法如何讓他們? –

+0

你失去了哪個動畫? – jrturton

0

我真的不知道你的問題來自哪裏。我認爲,也許你的翻譯會讓pickerView過於移動。你應該嘗試的是:

- (void)textFieldDidBeginEditing:(UITextField *)textField { 
    if(textField == categoryTextField){ 
     [categoryTextField resignFirstResponder]; 
     [UIView beginAnimations:@"picker" context:nil]; 
     [UIView setAnimationDuration:0.3]; 
     CGRect frame = pickerView.frame; 
     frame.origin.y = 480 - 236; // assuming your on an iPhone and your picker appears from bottom 
     pickerView.frame = frame; 
     [UIView commitAnimations]; 
    }else{ 
     [UIView beginAnimations:@"picker" context:nil]; 
     [UIView setAnimationDuration:0.3]; 
     CGRect frame = pickerView.frame; 
     frame.origin.y = 480; // assuming your on an iPhone and your picker disappears to bottom 
     pickerView.frame = frame; 
     [UIView commitAnimations]; 
    } 
} 

希望幫助