0

我最近更新了XCode(4.2与iOS5 SDK),现在我的应用程序每次使用“resignFirstResponder”时都会抛出EXC_BAD_ACCESS。UITextField -resignFirstResponder失败

我熟悉内存管理,并检查之前没有发布任何内容......疯狂的部分是“becomeFisrtResponder”会起作用。

做工精细:

if(_TextField==input){ 
    [inputPassWord becomeFirstResponder]; 
} 
else 
{ 
    [input becomeFirstResponder]; 
} 

不合格:

if(_TextField==input){ 
     [inputPassWord becomeFirstResponder]; 
    } 
    else 
    { 
     [_TextField resignFirstResponder]; 
    } 

的可能是什么你知道吗?

谢谢!

+0

有没有可能是输入不是当时的第一反应? –

+0

不这么认为。 'if(_TextField == input){inputPassWord becomeFirstResponder]; } else if([_ TextField isFirstResponder]) { NSLog(@“YES”); [_TextField resignFirstResponder]; } // [inputPassWord resignFirstResponder]; }' 正在记录“YES”,然后失败 – jdu

+1

也许成为FirstFoundResponder导致它被保留? – jbat100

回答

0

不知道这是否会有任何帮助,但是在第二个例子中的逻辑正确吗?

第一个看起来像你检查看看哪个TextField做了一些事情,然后设置firstResponder。

第二个似乎什么都不做,因为如果Input不是被测试的textField,它只会调用[input resignFirstResponder]

您是否尝试在第二个示例中切换两行代码,或使用!=而不是==。也许值得尝试一下。

我不认为应该引起虽然你的问题,但我是很新,这个

+0

当然...它不是“输入”,但“_TextField” – jdu

+0

你有没有试过在resignFirstResponder行之后直接粘贴NSLog()以查看是否失败? – Bertie

+0

或者,如果这是通过一堆子视图的某种迭代,你确定_TextField实际上是一个textField?我的意思是,如果你用“输入”而不是_TextField运行它,它会失败吗? – Bertie

相关问题