-1

我走了好几条路,想知道是否有人可以立即发现这一点:

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

从我读到的 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 正在触发并且由于某种原因不被容忍

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

说真的,当出现执行错误时,你得到的只是崩溃转储?这就是你所需要的吗?

4

2 回答 2

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)
于 2013-04-10T18:26:54.357 回答
3

问题很简单。您注册了该方法keyboardDidAppear:,但您提供了一个名为keyboardDidAppear. 这些不一样(注意冒号)。

改变一个或另一个(但不能同时改变两者)。

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

于 2013-04-10T18:27:54.367 回答