我有2个模态viewControllers:1) 过滤器 2) 登录 。
在SignInviewController中,我有一个user_login textField,它自动变为活动状态(显示键盘):
-(void)viewDidLayoutSubviews { [self.user_login becomeFirstResponder]; }如果我先打开SignInviewController ,一切都很好,键盘显示,我可以登录。
但是如果我首先打开模态FilterviewController ,更改过滤器设置,单击“完成”,然后打开SignInviewController - 我在iOS尝试显示键盘时获得EXC_BAD_ACCESS。
SignInviewController和FilterviewController之间没有连接 - 完全独立 - 所以我无法理解FilterviewController如何导致SignInviewController崩溃。
更新 :
Xcode突出显示[self.user_login becomeFirstResponder]; 绿色线和注意: Thread 1: EXC_BAD_ACCESS (code=1 address=0xb1057169)
更新-2 :
刚注意到还有一件事导致同样的错误。 如果我打开模态过滤器,单击任何textField(键盘显示),然后单击“完成”(过滤器关闭),然后再次打开过滤器并再次单击textField,我得到相同的EXC_BAD_ACCESS。
UPDATE-3
用户登录:
@property (strong) IBOutlet UITextField *user_login;I have 2 modals viewControllers: 1) Filters 2) Sign-in.
In SignInviewController I have a user_login textField, which automatically becomes active (shows keyboard):
-(void)viewDidLayoutSubviews { [self.user_login becomeFirstResponder]; }If I open SignInviewController first, everything is fine, keyboard shows up, I can sign-in.
But if I open modal FilterviewController first, change filter settings, click "Done", then open SignInviewController - I get EXC_BAD_ACCESS at the moment when iOS tries to show keyboard.
SignInviewController & FilterviewController are not connected between each other - totally separate - so I can't understand how FilterviewController causes crash of SignInviewController.
UPDATE:
Xcode highlights [self.user_login becomeFirstResponder]; line with green color and note: Thread 1: EXC_BAD_ACCESS (code=1 address=0xb1057169)
UPDATE-2:
Just noticed one more thing causing the same error. If I open modal Filter, click on any textField (keyboard shows), then click "Done" (Filter closes), then open Filter again and click on textField again, I get the same EXC_BAD_ACCESS.
UPDATE-3
user_login:
@property (strong) IBOutlet UITextField *user_login;最满意答案
看来user_login指向的文本字段已被释放。 user_login是unsafe_unretained属性吗?
EXC_BAD_ACCESS通常是一个对象被释放并在之后发送消息的结果。 您可以通过启用僵尸找到有关错误的更多信息:
在Xcode的方案编辑器中,切换到Diagnostics选项卡并选中“Enable Zombie Objects”。
Problem was caused by DAKeyboardControl library. I used it in one of my View Controllers, and I forgot to do this:
-(void) viewDidDisappear:(BOOL)animated { [self.view removeKeyboardControl]; }DAKeyboardControl subscribes for keyboard NSNotifications - and it needs to be removed by the method above.
更多推荐
发布评论