2017-06-26 14 views
0

たとえば、私のナビゲーションアイテムがメニューを開きますが、キーボードも消す必要があります。ナビゲーション項目に2つ以上のアクションを追加する方法は?

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

この場合、正しく動作しており、メニューが開きます。しかし、私はこれを追加するとき:

openMenu.action = #selector(dismissKeyboard) 

メニューが開いていないが、キーボードは、この2つの機能を組み合わせる方法を退けるのですか?代わりに、ボタンに2つのアクションを追加する

答えて

0

、あなたはこのようなあなたのrevealToggle機能でキーボードを閉じてみてくださいすることができます

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

revealToggle機能は別のファイルにし、Objective-Cで書かれたらしい - (IBAction)revealToggle:(ID)、送信者 {[自己revealToggleAnimated:YES]。 } –

+0

私はメニュー用にこれをインポートしました –

0

あなたは通知パターンを用いてこれを行うことができます。

openMenu.action = Selector("revealToggle:") 

は、あなたのクラスの通知をハンドルとして

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

があなたのボタンにセレクタを追加して あなたは明らかに

func handleKeyBorad() 
{ 
    textField.resignFirstResponder() 
} 

として通知のオブザーバーとして、あなたのクラスを追加することができます通知を起動するには

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

通知パターンを使用している間は、クラスを登録するだけでなく、不要である場合にはリスナーとして削除することを忘れないでください。上記のように登録現れなかった、と

-----------

NotificationCenter.default.removeObserver(self, name: notificationName, object: nil); 

------------ EDITよう通知を聞いて停止消えましたあなたの公開トグルでこの行だけを追加してください。

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

すべてのUIResponderを辞任します。通知を処理する必要はありません。

希望します。ハッピーコーディング!!

関連する問題