Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TextField辞职FirstResponder将在ios 7中崩溃_Ios_Iphone_Uitableview_Ios7_Uitextfield - Fatal编程技术网

TextField辞职FirstResponder将在ios 7中崩溃

TextField辞职FirstResponder将在ios 7中崩溃,ios,iphone,uitableview,ios7,uitextfield,Ios,Iphone,Uitableview,Ios7,Uitextfield,我正在将自定义单元格与XIB一起使用。现在我滚动表格,使包含TextField的单元格不可见。在这种情况下,如果我返回textField(意味着我调用[textField resignFirstResponder]),应用程序将崩溃并给出如下错误 [UITableViewCell _didChangeToFirstResponder:]: message sent to deallocated instance 0xe05aa20. 如果您对此有任何想法,请告诉我。您应该检查以下几项: 1)

我正在将
自定义单元格
与XIB一起使用。现在我滚动表格,使包含TextField的单元格不可见。在这种情况下,如果我返回textField(意味着我调用
[textField resignFirstResponder]
),应用程序将崩溃并给出如下错误

[UITableViewCell _didChangeToFirstResponder:]: message sent to deallocated instance
0xe05aa20. 

如果您对此有任何想法,请告诉我。

您应该检查以下几项:

1) 在
cellforrowatinexpath
delegate中,当您使用
dequeueReusableCellWithIdentifier
时,应将此视图的
endEditing
设置为YES,如下所示:

CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:@"identifier"]; [cell setEndEditing:YES]; if(!cell) { // Rest of the logic goes here } CustomCell*单元格=[tableView dequeueReusableCellWithIdentifier:@“identifier”]; [单元格设置编辑:是]; 如果(!单元格) { //其余的逻辑在这里 }
2) 不要忘记将UITableViewDelegate设置为
self
,它应该表示一个活动类。所以当委托函数调用时,类存在。

您需要检查您的文本字段是否是第一响应者。如果是这样的话,你可以安全地辞职

隐藏myTextField的键盘

if ([myTextField isFirstResponder]) {

    [myTextField resignFirstResponder];

}
辞去视图中任何子视图的第一响应者

for (UIView *aSubView in self.view.subviews) {

    if ([aSubView isFirstResponder]) {

        [aSubView resignFirstResponder];

        //break;

    }
}

使用以下方法解决辞职FirstResponder的问题:

[self resignFirstResonder:self.view];

- (BOOL)resignFirstResonder:(UIView *)textView
{
    keyBoardShow = NO;
    if(badgeHasFullInfo == YES)
    {
        if (textView.isFirstResponder)
        {
            [textView resignFirstResponder];
            return YES;
        }

        for (UIView *subView in textView.subviews)
        {
            if ([self findAndResignFirstResonder:subView])
            {
                return YES;
            }
        }
    }
    return NO;
}

你能发布一些代码吗?确认第一个UITextField委托不应该为零,设置它然后再试,希望它能工作。你在textField中编辑后辞职吗?从哪里调用
[textField resignFirstResponder]