2012-05-12 15 views
0

私は3つのUITexfieldを持っています。ユーザーは最初の2つを入力できますが、最後はカテゴリフィールドで、クリックすると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

あなたはそれがあまりにも困難にしているのに役立ちます願っています。ピッカービューをテキストフィールドの入力ビューとして設定すると、OSによってアニメーションが処理されます。各フィールドが最初のレスポンダになると、適切な入力ビュー(テキストのデフォルトキーボード、3番目のピッカー)が表示されます。自分でアニメーションを行う必要はありません。

+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]; 
    } 
}