2017-03-29 10 views
1

UIPickerViewをviewDidLoadのUITextFieldに入力ビューとして追加することができましたが、別のテキストフィールド(タグ= 4の場合) )編集を終了します。これは、私が使用しているコードです:最後の編集方法をしたUITextFieldが編集を開始したとき、UIPickerViewがinputviewとして表示されない

UIPickerView *myPickerView = [[UIPickerView alloc] init]; 
    myPickerView.showsSelectionIndicator = YES; 
    myPickerView.delegate = self; 
    myPickerView.dataSource = self; 
    myPickerView.backgroundColor = [UIColor colorWithRed:76/255.0 green:76/255.0 blue:76/255.0 alpha:1]; 
    textfieldInput.inputView = myPickerView; 

これは私のテキストフィールドにある:

これは、のviewDidLoadであり、そしてピッカービューを初期化するために必要な他のすべてのコードがあります:

-(void)textFieldDidEndEditing:(UITextField *)textField{ 
    if(textField.tag == 4){ 
     [textfieldInput becomeFirstResponder]; 
    } 

問題はtextfieldInputがファーストレスポンダになると、ピッカービューではなく、キーボードが提示され、図示していないことです。 また、最初の応答者になって非表示になった場合には、辞任する別のテキストフィールドがあります。このテキストフィールドは、タグが4のテキストフィールドです(このテキストフィールドは設計上の理由から追加されています)。

+0

あなたは 'textField'同じ' textField'だけの編集を終了した唯一のファーストレスポンダ作るしようとしています。それは意味をなさない。 – rmaddy

+0

いいえ、タグ4のテキストフィールドは、編集を終了したばかりのテキストフィールドです。最初の応答者になるテキストフィールドは新しいテキストフィールドです。 –

+0

ああ。私は変数名 'textField'と' textfield'のわずかな違いは見ませんでした。気にしないで。それはいくつかの貧弱な命名スタイルです。誤読やミスタイプが起こり易い。 – rmaddy

答えて

0

このコードは私にとってはうまくいきます...あなたは正しいテキストフィールドを参照してもよろしいですか?

試してみてください。[self.textfield becomeFirstResponder];

+0

それは動作しませんでした。私はまだデフォルトキーボードを取得しています。 –

+0

何が変だ!そしてこれをデバッグしますか?テキストフィールドを編集した後にbecomeFirstResponderを呼び出していることを確認してください。 – DiegoQ

+0

はい、ブレークポイントを追加して呼び出されています。また、テキストフィールドが最初のレスポンダになったことを証明するために、デフォルトのキーボードが表示され、値を入力できますが、ピッカービューは表示されません。これを追加すると、キーボードを一度外して手動で押すと、ピッカービューが表示されます。 –

関連する問題