Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios text becomeFirstResponder抛出EXC\u BAD\u访问代码=1地址=0x1_Ios_Objective C_Exc Bad Access_Becomefirstresponder - Fatal编程技术网

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变量上的原因