2016-09-06 3 views
1

ich eine Benachrichtigung auf viewDidLoad UIKeyboardWillShowNotification erschaffe und es auf viewwilldisappear entfernen.iOS - UIKeyboardWillShowNotification genannt mehrere Male, wenn Sperrbildschirm

Wenn die Tastatur auf dem Bildschirm erscheint und ihre Benachrichtigung einmal wie erwartet aufgerufen wird, habe ich den Bildschirm gesperrt. Die Benachrichtigung wird mal aufgerufen und unerwünschte Funktionalität erstellt.

Warum die Benachrichtigung aufgerufen wird? Wie kann ich dieses Szenario verhindern?

Ich füge Observer für die Benachrichtigung in viewDidLoad auf diese Weise

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

EDIT: Gleiche Ergebnisse, wenn ich die App Hintergrund statt Sperre Bildschirm senden.

Antwort

0

In Ihrem Fall Notification ruft mehrere Male auf, die die addObserver-Aufrufe mehrere Male anzeigt, oder Sie entfernen den Beobachter nicht, sobald seine Verwendung erfolgt ist.

Folgen Sie einfach diese Dinge:

  • Wie Sie erwähnten Sie Beobachter in viewwilldisappear Verfahren entfernt werden soll. Versuchen Sie also, & debuggen zu sehen, ob es aufgerufen wird. Wenn diese Methode nicht aufgerufen wird, versuchen Sie, sie in viewDidUnload Methode zu entfernen.
  • Wenn Sie immer noch nicht in der Lage sind, den Beobachter zu entfernen, dann entfernen Sie einfach den Beobachtercode vor der Zeile des Beobachter hinzufügen. Das ist es. Es wird sicher funktionieren.

Hinweis:

  • Lösung, die ich Ihnen vorgeschlagen habe bereits versucht & getestet & an meinem Ende gut funktioniert.

Ich hoffe, es wird Ihnen helfen.

+0

Sicher werden die Dinge, die Sie gesagt haben, funktionieren. Aber die Sache ist das Hinzufügen von Observer für die Tastatur Benachrichtigung wird einmal in Viewdidload gefeuert und nie wieder initialisiert. viewwilldisappear wird nicht beim Senden der App an den Hintergrund aufgerufen. Das muss bei Apple ein Problem sein. Ich werde Ihre Antwort richtig markieren, wenn ich keine weiteren Antworten auf das genaue Problem bekomme. – Hassy

+0

@ghazi_jaffary Ich schlage vor, Sie debuggen und sehen, welche ViewController-Delegate-Methode aufruft. Wie wenn ViewDidUnload Ihren Fall aufrufen könnte – Mayur

+0

@ghazi_jaffary präsentieren Sie den Viewcontroller wo SieObserver hinzufügen? –

2

dass gleiche mit mir passiert war

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

Ich war ein View-Controller auf den Knopf klicken präsentiert. Jedes Mal, wenn ich Viewcontroller präsentiere, wird viewdidload aufgerufen und addObserver hinzugefügt. also wird die Methode mehrfach aufgerufen.

+0

In meinem Fall wird es nur einmal nicht mehrere Male aufgerufen – Hassy

+0

@Hassy, ​​wenn app Hintergrund UIKeyboardWillShowNotification Feuer mehrere Zeit geht. Es kann os Problem sein. –

+0

Ja wahrscheinlich ist es Betriebssystemproblem. – Hassy

Verwandte Themen