Ios text becomeFirstResponder抛出EXC\u BAD\u访问代码=1地址=0x1
这是一个问答,希望能帮助任何遇到这个问题的人。这个问题似乎是随机发生的,当时我正在处理在控件之间传输第一响应者链 控件是从Ios text becomeFirstResponder抛出EXC\u BAD\u访问代码=1地址=0x1,ios,objective-c,exc-bad-access,becomefirstresponder,Ios,Objective C,Exc Bad Access,Becomefirstresponder,这是一个问答,希望能帮助任何遇到这个问题的人。这个问题似乎是随机发生的,当时我正在处理在控件之间传输第一响应者链 控件是从UIView继承的自定义控件对象,其中UITextField或UITextView添加为子视图(与其他控件一起),并完全在代码中生成 并非生成的控件的每个实例都会引发异常,但无论textfield/textview是否在代码中调用了[text becomeFirstResponder],或者是否点击了textfield/textview,都会持续引发异常 在这一次中,我花了大
UIView
继承的自定义控件对象,其中UITextField
或UITextView
添加为子视图(与其他控件一起),并完全在代码中生成
并非生成的控件的每个实例都会引发异常,但无论textfield/textview
是否在代码中调用了[text becomeFirstResponder]
,或者是否点击了textfield/textview
,都会持续引发异常
在这一次中,我花了大约6个小时的时间把头发撕下来……基本自定义控件有一个布尔值“firstResponder”,我用它来跟踪屏幕上哪些自定义控件应该首先开始编辑 初始化代码中包含以下内容:
如果([firstResponderAttribute IsequalString:@“YES”])firstResponder=YES;
else firstResponder=否代码>
当firstResponderAttribute为YES时,控件抛出错误;当firstResponderAttribute为NO时,控件正常。显然,当将“firstResponder”设置为NO(=0x0)时,响应程序链看到的值为nil,但当它设置为YES(=错误消息中的0x1)时,响应程序链尝试访问地址0x1处的对象,但失败
解决方案?不要在任何UIView子类中使用firstResponder作为值
另一方面,这个问题不是通过分析发现的,我也没有在Apple文档中找到任何关于该值的参考(尽管我没有仔细查看…有时,当您看到底部视图或非屏幕视图/超级视图时
EXC_BAD_ACCESS
/* when you try*/
[responder becomeFirstResponder]
/*or*/
[super becomeFirstResponder];
以后再做吧。例如(使用屏幕上的\u响应程序查看/查看\u时执行此操作:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[_toTokenField becomeFirstResponder];
});
当UITextField委托
为零时,我发生了此崩溃。例如,请确保该委托未在该字段为零的NIB文件中设置为“文件的所有者”。是将我作为问题推到firstResponder变量上的原因