EXC_BAD_ACCESS错误.. textfield resignFirstResponder

时间:2011-10-22 15:51:45

标签: iphone ios xcode4 objective-c-2.0

我是这个Xcode的新手。

我的错误详情:

1)我开始使用Xcode中的实用程序应用程序

2)在我的MainView.xibI中放置了一个文本字段。并将其链接到代码简单的方法。(只需拖入我的MainViewController.h文件......它声明了它,甚至为它设置了属性和合成。)

3)现在,当我运行程序时......我看到了我的文本字段..我按下它......键盘出现...当我尝试输入..只是在1或2个字母之后它运行一个错误在UIApplicationMain中说EXC_BAD_ACCESS。我搜索它已经有一段时间了,这里只有堆栈溢出我找到了一个解决方案,将textField中的更正更改为no ..这解决了...这不是我的主要问题..但我想确认这个方法是否是好的,将来继续做......以后的某个时候我会想要启用更正。

4)我的主要问题是,当用户按下键盘上的返回键时,我想让我的文本字段键盘弹回。 我用过这种方法.. 你可以看到它我尝试了几种方法来检查各种方法。

-(BOOL) textFieldShouldReturn:(UITextField *)textField {    
    // if([textField becomeFirstResponder]) {
    NSLog(@"IN FINCTION");
    [textField resignFirstResponder];
    return YES;
}

该程序运行时两行都已注释而未注释但仍然每次遇到函数结束时我都会在UIApplicationMainEXC_BAD_ACCESS中遇到同样的错误。

另外,我确实启用了僵尸,但我不确定我是否正确使用它,所以如果你们中的任何人想要那些信息。

我检查了不同版本的Xcode上的代码..一个是正常的,另一个是GM。

控制台显示IN FUNCTION的日志。

由于

1 个答案:

答案 0 :(得分:2)

您可能希望从该方法返回NO,因为您现在拥有它,您正在从textField中移除焦点(和光标),但随后表明您想要处理返回按钮。但是,由于您已经辞职了第一响应者,因此无法处理按下的返回按钮。

试试这个:

-(BOOL) textFieldShouldReturn:(UITextField *)textField {    
    [textField resignFirstResponder];
    return NO;
}

来自UITextFieldDelegate Protocol docs:

  

textFieldShouldReturn:

     

询问代表文本字段是否应该按下返回按钮。


如果上述方法无效,请尝试以下方法:

在调试器中设置NSZombieEnabledMallocStackLoggingguard malloc。然后,当您的应用程序崩溃时,请在gdb控制台中输入:

(gdb) info malloc-history 0x543216

0x543216替换为导致崩溃的对象的地址,您将获得更有用的堆栈跟踪,它可以帮助您查明代码中导致问题的确切行。

See this article (how-to-debug-exc_bad_access-on-iphone) for more detailed instructions.


如果以上也无效,请尝试:

您可能还想尝试在模拟器键盘设置中关闭“自动更正”。当您尝试在文本字段中输入文本时,其中一个版本的模拟器中存在一个可能导致崩溃的错误。

Simulator