resignFirstResponder导致EXC_BAD_ACCESS

kol*_*nko 5 iphone cocoa-touch uitextfield first-responder

我在UITableViewCell上有一个UITextField,在另一个单元格上有一个按钮。

我单击UITextField(出现键盘)。

UITextField具有以下调用的方法:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
        NSLog(@"yes, it's being called");
 owner.activeTextField = textField;
 return YES;
};
Run Code Online (Sandbox Code Playgroud)

其中owner.activeTextField是一个(保留的,非原子的)属性。

问题 当键盘可见时,我将单元格滚动出视图。然后,我单击另一个单元格上的按钮。该按钮将调用:

[owner.activeTextField resignFirstResponder]
Run Code Online (Sandbox Code Playgroud)

这会导致EXC_BAD_ACCESS。

任何的想法?该单元肯定在内存中。我的猜测是,一旦消失,它就会从视图中删除,并且其属性之一(父视图?)变为nil,并导致上述错误。

我对吗?

TL; DR; 从视图中删除UITextField时,如何删除键盘(请先回复第一响应者)?

Mik*_*ard 2

有时问题可能会更严重......检查并确保响应者链中的下一个对象(随后接收成为FirstResponder消息的对象)不是垃圾。只是一个想法。