iOS - UIKeyboardWillShowNotification在锁定屏幕

时间:2016-09-06 10:00:10

标签: ios objective-c nsnotificationcenter

我正在viewdidload UIKeyboardWillShowNotification 上创建通知,并在 viewwilldisappear 上删除它。

当键盘出现在屏幕上并按预期调用一次通知时,我锁定了屏幕。该通知称为 4 次,并创建了不需要的功能。

为什么要通知通知?我怎样才能阻止这种情况?

我正在以这种方式在viewdidload中添加Observer以进行通知

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardWillShow:)
                                             name:UIKeyboardWillShowNotification
                                           object:nil];

修改 如果我将应用程序发送到后台而不是锁定屏幕,结果相同。

2 个答案:

答案 0 :(得分:2)

同样的事情发生在我身上

[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWillShow:)
                                                 name:UIKeyboardWillShowNotification
                                               object:nil];

我在按钮点击时呈现了一个视图控制器。每次我提出Viewcontroller viewdidload都会调用它添加addObserver。所以该方法被多次调用。

答案 1 :(得分:0)

在你的情况下,Notification多次调用会多次显示addObserver调用,或者在完成使用后你不会删除观察者。

只需遵循以下内容:

  • 正如您所说,您正在viewwilldisappear方法中移除观察者。所以尝试调试&看看它是否被调用。如果未调用此方法,请尝试在viewDidUnload方法中将其删除。
  • 如果仍然无法移除观察者,只需在添加观察者行之前放置删除观察者代码。就是这样。它肯定会起作用。

注意:

  • 我向你建议的解决方案已经尝试过&测试和测试我的工作很好。

希望它会对你有所帮助。