第一个文本框不会辞职第一响应者

时间:2012-07-31 13:57:38

标签: objective-c ios textbox uipickerview

我有三个文本字段。它们由UI Picker选项填充。第一个文本字段text1不会重新签名选择器,其他两个框可以正常工作。我已检查并三重检查代码。我真的不明白为什么它不会辞职。

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



  }



}

更新 - 我可以使用按钮退出text1,由于某种原因它不会在didSelectRow方法中退出

2 个答案:

答案 0 :(得分:0)

好的,你可以尝试一件事。

将textField分配给textFieldDidbeginEditing

中的成员变量

在你的picker方法中重新签名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];
}

答案 1 :(得分: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];
    }




  }

  }



}