質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

1118閲覧

Swiftで画面遷移後にTextViewをフォーカスしたいです。

Ryan

総合スコア34

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

1クリップ

投稿2017/07/25 06:24

swiftでPageViewControllerを使って2つのViewController(ViewController1,ViewController2)の画面遷移を使ったiPhoneアプリを作成しています。

ViewController1にはtextViewが設置してあり、ViewController1が表示された段階で、フォーカスされるようにしたいです。
アプリ起動時にはフォーカスされているのですが、
ViewController2 → ViewController1の遷移時には一瞬フォーカスされてキーボードが表示されるのですが、すぐに消えてしまいます。

swift

1 override func viewWillAppear(_ animated: Bool) { 2 textView.becomeFirstResponder() 3}

↑このように記述することで、textView.isFirstResponderの値はtrueになるのですが、textView.isFocusedの値はfalseのままです。(textViewはFirstResponderなのにフォーカスされていない)

質問するのが初めてなので、質問の書き方がわかりにくくて恐縮ですが、解決方法をご存知の方はご教授くださいますとありがたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Swift

1NSOperationQueue.mainQueue().addOperationWithBlock({ 2myTextView.becomeFirstResponder() 3});

swift3だと書き方変わると思いますが mainスレッドで処理してみてください。
またBlock指定することによって今実行している一連の処理が終わった後に実行されるようになります。

投稿2017/08/02 01:04

Tak1016

総合スコア1408

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

画面遷移時にキーボードを非表示にしていると思いますが、 textViewresignFirstResponder している箇所が再表示のタイミングで呼ばれていませんか?

投稿2017/07/25 12:51

ykws

総合スコア1236

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ryan

2017/07/25 13:04

ご回答ありがとうございます。 textViewをresignFirstResponderする処理は実装していないのですが、なぜかtextViewのキーボードが消えてしまいます。 ひょっとすると、実装していなくても画面遷移のどこかのタイミングでtextViewのFirstResponderが消えているんですかね?
ykws

2017/07/25 13:06

だとすると、別のオブジェクトが becomeFirstResponder を呼んでいたりしますかね
Ryan

2017/07/25 13:21

その可能性が高そうです。検証した結果viewDidAppear内でtextViewのisFirstResponderの値はtrueなのですが、その後なぜかfalseになっている模様です。viewDidLoadの後に他のオブジェクトがbecomeFirstResponderを呼んでいるのですかね? 勉強不足で申し訳ございません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問