0

3 つのテキスト フィールドがあります。これらは、UI ピッカーの選択によって取り込まれます。最初のテキスト フィールドtext1はピッカーを辞任せず、他の 2 つのボックスは正常に機能します。コードを確認し、トリプルチェックしました。辞めない理由がよくわかりません。

 }
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component

{

NSInteger selectedRow = [select selectedRowInComponent:0];
    if([text1 isFirstResponder])
    text1.text = [arrStatus objectAtIndex: selectedRow];

else{
    NSInteger selectedRow = [select2 selectedRowInComponent:0];
    if ([text2 isFirstResponder])
        text2.text = [arrStatus2 objectAtIndex: selectedRow];

else{
    NSInteger selectedRow = [select3 selectedRowInComponent:0];
    if ([text3 isFirstResponder])
        text3.text = [arrStatus3 objectAtIndex: selectedRow];




    }


[text1 resignFirstResponder]; //<<<wont resign first responder
[text2 resignFirstResponder];
[text3 resignFirstResponder];



  }



}

UPDATE-ボタンを使用して辞任できtext1ますが、何らかの理由でdidSelectRowメソッドで辞任しません

4

2 に答える 2

0

これを修正し、中かっこで助けてください!

{
    {
    NSInteger selectedRow = [select selectedRowInComponent:0];
    if([text1 isFirstResponder])
    {
    text1.text = [arrStatus objectAtIndex: selectedRow];
         [text1 resignFirstResponder];
    }
else{
    NSInteger selectedRow = [select2 selectedRowInComponent:0];
    if ([text2 isFirstResponder])
    {
    text2.text = [arrStatus2 objectAtIndex: selectedRow];
         [text2 resignFirstResponder];
    }
else{
    NSInteger selectedRow = [select3 selectedRowInComponent:0];
    if ([text3 isFirstResponder])
    {
    text3.text = [arrStatus3 objectAtIndex: selectedRow];
         [text3 resignFirstResponder];
    }




  }

  }



}
于 2012-08-01T11:30:17.143 に答える
0

では、1 つのことを試していただけますか。

textField をメンバー変数に割り当てますtextFieldDidbeginEditing

そして、ピッカー メソッドで memberVariable オブジェクトを再署名します。

if 条件内でキーボードを辞任する代わりに。外に置いてもいいですか。このようなものを試してみてください。

{
    {

    NSInteger selectedRow = [select selectedRowInComponent:0];
        if([text1 isFirstResponder])
            text1.text = [arrStatus objectAtIndex: selectedRow];
    else
    {
        NSInteger selectedRow = [select2 selectedRowInComponent:0];
            if ([text2 isFirstResponder])
            text2.text = [arrStatus2 objectAtIndex: selectedRow];
            else
        {
                NSInteger selectedRow = [select3 selectedRowInComponent:0];
                if ([text3 isFirstResponder])
                 text3.text = [arrStatus3 objectAtIndex: selectedRow];
         }
     }

    }
[selectedTextField resignFirstResponder];
}
于 2012-07-31T19:26:31.317 に答える