0

ユーザーが を選択したときにキーボードを非表示にしようとしていますUITextField。現在、3 つのテキスト フィールドがあります。2 つUIPickerView(同じピッカーによって制御されます) とテキスト入力フィールドです。「戻る」またはバックグラウンドをクリックすると、resignFirstResponder呼び出しでキーボードが消えます。

問題:

現在テキスト入力フィールドを編集していて、すぐに機能付きを選択するUITextFieldUIPickerView、キーボードが消えません。私はすべての解決策を試して、壁に頭をぶつけているような気がします...

コード:

-(void)textFieldDidBeginEditing:(UITextField *)textField{
    [pickerView setHidden:YES];
    if (fldQuiver.editing == YES) {
        [fldTitle resignFirstResponder];
        [fldQuiver resignFirstResponder];
        [pickerView setHidden:NO];
        variabla = 1;
    }else if (fldCategory.editing == YES) {
        [fldTitle resignFirstResponder];
        [fldCategory resignFirstResponder];
        [pickerView setHidden:NO];
        variabla = 2;
    }
    NSLog(@"variabla %d",variabla);
    [pickerView reloadAllComponents];
}

どんな助けでも大歓迎です。前もって感謝します。

PRINCE の編集済みコード:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;        // return NO to disallow editing.
{
    //set logic for picker view here
    if (textField == fldQuiver)
    {
        variabla = 1;
    }
    else if (textField == fldCategory) {
        variabla = 2;
    }
    else
    {
    }
    NSLog(@"variabla %d",variabla);
    [pickerView reloadAllComponents];

    if (textField == fldQuiver)
    {
        [fldTitle resignFirstResponder];
        [pickerView setHidden:NO];
        return NO;
    }
    else if (textField == fldCategory) {
        [fldTitle resignFirstResponder];
        [pickerView setHidden:NO];
        return NO;
    }
    else
    {
        [pickerView setHidden:YES];
        return YES;
    }
}

また:私は「合成」して宣言しました@property fldQuiverand fldCategory. 私は、、、のために持ってIBOutletfldTitleます。fldQuiverfldCategory

にはpickerView、変数に基づく配列がロードされます。

4

2 に答える 2

2

textFieldShouldBeginEditing delegateこれにはメソッドを使用します。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;        // return NO to disallow editing.
{
   //set logic for picker view here 
   if (textField == fldQuiver) 
   {
      //picker view hidden or show here
      return NO;
   }
   else if (textField == fldCategory) {
       //picker view hidden or show here
      return NO;
   }
   else
   {
      return YES;
   }

}
于 2012-11-05T07:14:20.933 に答える