2017-06-26 3 views
0

Zum Beispiel mein Navigationselement öffnet Menü, aber ich möchte, dass es Tastatur auch entlassen sollte.Wie fügt man dem Navigationselement 2 oder mehr Aktionen hinzu?

openMenu.target = self.revealViewController() 
    openMenu.action = Selector("revealToggle:") 

in diesem Fall funktioniert es richtig und öffnet Menü. Aber wenn ich das addiere:

das Menü öffnet nicht, aber Tastatur ist entlassen, wie man diese 2 Funktionen kombiniert?

func revealToggle() { 
    textField.resignFirstResponder() 
    // continue your code 
} 

Antwort

0

Statt zwei Aktion auf eine Schaltfläche hinzuzufügen, können Sie Tastatur in Ihrer revealToggle Funktion wie diese versuchen zu entlassen. Sie können für die Benachrichtigung als

// Register to receive notification 
NotificationCenter.default.addObserver(self, selector: #selector(YourClassName.handleKeyBorad), name: menuRevealed, object: nil) 

Fügen Sie den Wähler auf Ihre Schaltfläche als

openMenu.action = Selector("revealToggle:") 

Behandeln Sie die Benachrichtigung in Ihrer Klasse als

func handleKeyBorad() 
{ 
    textField.resignFirstResponder() 
} 

In Ihrem die Klasse als Beobachter hinzufügen offenbaren Toggle-Methode feuern die Benachrichtigung als

[[NSNotificationCenter defaultCenter] postNotificationName:@"menuRevealed" 
                object:self]; 

Denken Sie bei der Verwendung des Benachrichtigungsmusters daran, eine Klasse zu registrieren und sie als Listener zu entfernen, wenn sie nicht benötigt wird. In erschien wie oben registrieren und als

anzeige- hörte verschwinden hören
NotificationCenter.default.removeObserver(self, name: notificationName, object: nil); 

------------ EDIT -----------

Fügen Sie in Ihrer Anzeige nur die folgende Zeile hinzu:

UIApplication.sharedApplication().sendAction("resignFirstResponder", to:nil, from:nil, forEvent:nil) 

Es wird alle UIResponder zurücktreten. muss nicht mit Benachrichtigungen umgehen.

Ich hoffe, es hilft. Glückliche Kodierung !!

+0

revealToggle Funktion in einer anderen Datei geschrieben wurde und in Objective-c Ich denke, - (IBAction) revealToggle: (id) sender { [self revealToggleAnimated: YES]; } –

+0

Ich habe dies nur für das Menü importieren –

0

Sie können dies tun, indem Sie Mitteilung Muster:

Verwandte Themen