Keyboard ios7 navigationbar在显示键盘的VC之后导致EXC_错误访问

Keyboard ios7 navigationbar在显示键盘的VC之后导致EXC_错误访问,keyboard,uitableview,uinavigationbar,ios7,back,Keyboard,Uitableview,Uinavigationbar,Ios7,Back,我有一个类似app:UITableViewController的便笺,通过将便笺推到导航堆栈上来显示各个便笺 当我使用带有第一响应程序状态(显示键盘)的UITextView并按下返回按钮时,就会出现问题。当前视图控制器按预期随动画一起关闭,但导航栏现在已断开!如果我按下任何一个工具栏按钮,都会导致EXC\u无法访问 我要说的是,它没有得到适当的转换。表VC也被破坏了,因为在进一步的操作中它可能会显示为空。。。非常奇怪的行为 顺便说一句,它没有给iOS5和iOS6带来任何问题,但我在那里使用了一个

我有一个类似app:
UITableViewController
的便笺,通过将便笺推到导航堆栈上来显示各个便笺

当我使用带有第一响应程序状态(显示键盘)的
UITextView
并按下返回按钮时,就会出现问题。当前视图控制器按预期随动画一起关闭,但导航栏现在已断开!如果我按下任何一个工具栏按钮,都会导致EXC\u无法访问

我要说的是,它没有得到适当的转换。表VC也被破坏了,因为在进一步的操作中它可能会显示为空。。。非常奇怪的行为

顺便说一句,它没有给iOS5和iOS6带来任何问题,但我在那里使用了一个定制的V形后退按钮

我已经检查了标准Notes应用程序,它工作起来很有魅力。 诀窍是什么


非常感谢你的建议

EXC\u BAD\u ACCESS
表示您试图访问已解除分配的对象。要跟踪它,最好的办法是启用NSZombie,它会告诉您哪个发布的对象正在被发送一条消息(也称为EXC_BAD_ACCESS)


您可以从中获取如何启用它。

我已经获得了它,并将尝试解释如何帮助其他人挽救他们的一天

引发EXC\u BAD\u访问是因为在返回弹出动画期间,
UITableViewController
未正确转换到(其
ViewWillDisplay:
ViewDidDisplay:
方法根本未触发)。 反过来,动画没有正确执行,因为
popViewControllerAnimated:
被调用了两次甚至更多次:1)作为系统后退按钮回调的一部分;2) 如果未输入文本,则在
textViewDiEndediting:

解决方法是在调用
popViewControllerAnimated:
之前检查是否按下了后退按钮。诀窍是检查局部视图控制器是否仍在导航堆栈中。 以下是帮助器方法:

-(void) returnToTheListOfRecords {
    self.textView.delegate = nil; // this is to avoid the second call of `textViewDidEndEditing:`
    if ([self.navigationController.viewControllers indexOfObject:self.delegate]==NSNotFound) {
        // Back button has been pressed.
    } else {
        [self.navigationController popViewControllerAnimated:YES];
    }
}

问题只发生在iOS7上,只是因为它的全新动画。请考虑将一些代码与崩溃日志一起发布。在跟踪之后,我发现UITableViewController的VIEW会出现:和VIEDIDUSEDATION:在用一个活动键盘返回它之后,方法不会被触发。为什么会这样?嗯,设置导航控制器了吗?不,我应该设置吗?为何这个问题只有在键盘处于活动状态时才会出现,如果我在返回导航之前关闭它,一切都很好。我有一个问题。。。我正在呼叫
[self.navigationController popViewControllerAnimated:是]textViewDiEndEditing:
中选择code>。它可能会与“后退”按钮触发的正在进行的popViewController动画重叠。正如我在前面的评论中所说,我理解为什么会引发EXC_BAD_访问,以及是什么导致了它
PopViewControllerInitiated:
被调用两次(系统从后退按钮和从
TextViewDiEndediting:
)。我只是不知道如何正确处理它,如何检查后退按钮动画是否已经在进行中…尝试退出[textView resignFirstResponder];在你的视图中,如果什么都没有发生,请编辑你的问题并发布你的代码。不幸的是,它没有帮助。但我找到了解决办法!我会回答我的问题。非常感谢你的建议。