ios nsnotificationcenter program abort

时间:2013-04-10 18:23:57

标签: ios nsnotificationcenter

我走了很多路,想知道是否有人可以发现这一点:

我想在选择文本字段时显示按钮(因此键盘已加载)。

从我读过的NSNotificationCenter可以做到这一点:

所以在viewWillAppear中我放置了以下内容

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidAppear:) name:UIKeyboardWillShowNotification object:self.view.window];

目的地(选择器)我有:

-(void)keyboardDidAppear{    
  _button2.hidden  = FALSE;
}

程序中止到崩溃转储(确实看起来应该有比这更好的调试路径)

如果我注释掉keyboardDidAppear中唯一的一行

// _button2.hidden = FALSE;

程序仍然中止

显然,NSNotificationCenter正在解雇,并且由于某种原因不能容忍

任何简化的帮助将不胜感激。

说真的,崩溃转储是你在执行错误时得到的吗?这就是你需要的全部吗?

2 个答案:

答案 0 :(得分:3)

您正尝试向keyboardDidAppear:发送邮件,但您已实施keyboardDidAppear。第一种方法是采用参数的方法,但是你提供了一种不带参数的方法,这当然是不同的。

将方法定义更改为

-(void)keyboardDidAppear:(NSNotification *)n {    
  _button2.hidden = NO; //Please stick to Obj-C semantics and use NO, as opposed to FALSE.
}

或致电

@selector(keyboardDidAppear)

答案 1 :(得分:3)

问题很简单。您注册方法keyboardDidAppear:但提供名为keyboardDidAppear的方法。这些不一样(注意结肠)。

更改其中一个(但不是两个)。

另一个解决方案是实现UITextFieldDelegate方法textFieldDidBeginEditing:并在调用此方法时显示按钮。