1

我是这个 Xcode 东西的新手。

我的错误的详细信息:

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

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

3)现在当我运行程序时..我看到我的文本字段..我按下它..键盘出现...当我尝试输入..在 1 或 2 个字母之后它运行错误UIApplicationMainEXC_BAD_ACCESS。我搜索了很长一段时间,并且仅在堆栈溢出时在这里的某个地方找到了一个解决方案,可以将 textField 中的更正更改为 no .. 这解决了它...这不是我的主要问题..但我想确认此方法是否有效好的,以后继续做……将来的某个时候,我希望启用更正功能。

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

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

该程序在两行注释和未注释的情况下运行,但每次它到达函数的末尾时,它都会让我在UIApplicationMain:中出现相同的错误EXC_BAD_ACCESS

另外,我确实启用了僵尸,但我不确定我是否正确地这样做了,所以如果你们中的任何人想要有关这方面的信息。

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

控制台显示 IN FUNCTION 的日志。

谢谢

4

1 回答 1

2

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

尝试这个:

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

来自UITextFieldDelegate 协议文档:

textFieldShouldReturn:

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


如果上述方法不起作用,请尝试以下操作:

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

(gdb) info malloc-history 0x543216

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

有关更详细的说明,请参阅这篇文章(how-to-debug-exc_bad_access-on-iphone)。


如果上述方法也不起作用,请尝试以下操作:

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

模拟器

于 2011-10-22T16:14:28.113 回答