2017-09-18 21 views
5

最初に、UIKeyControllerがUIKeyboardWillShow通知を受け取り、キーボードの画面を調整しました。しかし、私が絵文字キーボードに変更するたびに、通知は呼ばれませんでした。UIKeyboardWillChangeFrame Emojiキーボードで通知が呼び出されない

だから、私は私がちょうどキーボードの種類をタップして絵文字に変更した場合、正常に動作するようです。この

NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardChanged(notification:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil) 

ようUIKeyboardWillChangeFrame通知に変更しました。

ただし、キーボードタイプを押したままにして(私のキーボードに複数の言語があります)、絵文字キーボードを選択すると、通知は行われません。

誰でもこれまでのようなものがありましたか?助言がありますか?

+0

私のアプリは、キーボードが表示されているかどうかに基づいて画面を調整し、絵文字キーボードが選択されている場合でもうまく動作します。あなたのコードを見せてもらえますか? – TNguyen

+0

私の質問@ TPN1994を編集します。しかし、私は実際にオブザーバを追加するだけで、他のケースではうまく動作します。私はこれがiOS 11の問題かもしれないと思っています。なぜなら、他のデバイスでもうまく動作するからです.../ – GustavoAzOl

+0

ブレークポイントを置くと/ printステートメントが表示されるのはいつもそうです。 UIKeyboardWillShowまたはUIKeyboardWillHideのいずれかが呼び出されていない不思議なバグがあったことを覚えています。残念ながら、私はそれがどれだったのか覚えていません。それにもかかわらず、コード全体を投稿することは依然として助けになります。 – TNguyen

答えて

4

これはiOSの11のバグですが、ハック一時的な解決策があります:

あなたは言語モードの変更を聞くことができます。

NotificationCenter.default.addObserver(self, selector: #selector(inputModeDidChange(_:)), name: .UITextInputCurrentInputModeDidChange, object: nil) 

絵文字をチェック:

if([[UITextInputMode currentInputMode].primaryLanguage isEqualToString:@"emoji"]) // layout again 
関連する問題