0

我有三个文本字段。它们由 UI 选择器选择填充。第一个文本字段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方法中辞职

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

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

将 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 回答