UITextField成为FirstFirstResponder,不显示文本的光标

时间:2014-01-04 02:32:41

标签: ios uitableview uitextfield

我在每个UITableViewRow上都有两个UITextField,由于某种原因,当我按下UIKeyboard上的一个特定行时,两个UITextField都不会重新给定(光标不可见)。

我有一个我正在使用的自定义UITableViewCell,如果你愿意,我可以告诉你这个代码,但是我不认为这是问题,因为返回键适用于95%的UITableViewCells。所以我想也许是我如何处理UITextFields的委托方法?

这是我用于委托方法的代码。

-(BOOL)textFieldShouldBeginEditing:(UITextField*)textfield {

        int height = self.finishingTableView.frame.size.height;
         self.finishingTableView.frame= CGRectMake(self.finishingTableView.frame.origin.x, self.finishingTableView.frame.origin.y, self.finishingTableView.frame.size.width, 307);

    // select correct row
    if (textfield.tag > 999999) {
        int adjustTag = textfield.tag-1000000; // remove a million so that you have the text fields correct position in the table. (this is only for height textfields)
        NSIndexPath *indexPath =[NSIndexPath indexPathForRow:adjustTag inSection:0];
        [finishingTableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
        [self tableView:finishingTableView didSelectRowAtIndexPath:indexPath];
        [self.finishingTableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionNone animated:YES];
        return YES;
    } else {
        NSIndexPath *indexPath =[NSIndexPath indexPathForRow:textfield.tag inSection:0];
        [finishingTableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
        [self tableView:finishingTableView didSelectRowAtIndexPath:indexPath];
        [self.finishingTableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionNone animated:YES];
        return YES;
    }
    return YES;
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    NSLog(@"%i", textField.tag+1);

    [[self.view viewWithTag:textField.tag+1] becomeFirstResponder];
    // this means there has been a change in the UItextfield


    NSLog(@"%@", selectedItemDictionary);
    if (textField.tag < 999999) {
        tempFinishingObjectDictionary = [selectedItemDictionary mutableCopy];
        if (![textField.text isEqualToString:[selectedItemDictionary objectForKey:@"mMM"]]) {
            tempUpdatedRow = @"T";
            // remove kevalues
            [tempFinishingObjectDictionary removeObjectForKey:@"updatedRow"];
            [tempFinishingObjectDictionary removeObjectForKey:@"new_mMM"];
            // update keyvalues
            [tempFinishingObjectDictionary setValue:tempUpdatedRow forKey:@"updatedRow"];
            [tempFinishingObjectDictionary setValue:textField.text forKey:@"new_mMM"];
        }
    } else {
        if (![textField.text isEqualToString:[selectedItemDictionary objectForKey:@"hMM"]]) {
            tempUpdatedRow = @"T";
            // remove kevalues
            [tempFinishingObjectDictionary removeObjectForKey:@"updatedRow"];
            [tempFinishingObjectDictionary removeObjectForKey:@"new_hMM"];
            // update keyvalues
            [tempFinishingObjectDictionary setValue:tempUpdatedRow forKey:@"updatedRow"];
            [tempFinishingObjectDictionary setValue:textField.text forKey:@"new_hMM"];
        }
    }
    NSLog(@"%@", tempFinishingObjectDictionary);
    [coreDataController editSelectedFinishing:htmlProjID UpdatedNSD:tempFinishingObjectDictionary SelectedRow:selectedItemIndexPathRow];
    [SVProgressHUD dismiss];


    NSLog(@"%@", selectedItemDictionary);

    return YES;
}

任何帮助都会受到赞赏,我已经坚持了一个多星期这个问题,一次又一次地回到这个问题,并没有看到哪里看起来有雾,或者如何找到这个错误,因为它似乎是随机的,但每次都发生在相同的UITextFields上......

如果你想看到我的其他任何代码让我知道,我会把它添加到这篇文章..我只是不想用无意义的代码泛滥这个问题..上面的代码是我认为问题可能的地方谎言..然而,记录了所有内容并调试了几个小时,我开始认为它是UITextFields在UITableViewCells中的一个错误。

再一次,任何帮助都会得到大力赞赏。

1 个答案:

答案 0 :(得分:2)

[[self.view viewWithTag:textField.tag+1] canBecomeFirstResponder] == YES

在将第一个响应者设置为第一个响应者之前,您还需要重新设置当前UITextField

[textField resignFirstResponder];