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

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

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

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

解決済

2回答

7595閲覧

【Swift】Textviewからフォーカスを外す方法

3buro

総合スコア29

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

0グッド

0クリップ

投稿2016/01/12 00:52

編集2016/01/12 05:38

いつも世話になっております。

書き出したTextViewの文字を編集する機能の実装を行っています。
TextViewにフォーカスが当たった際、別のViewControllerに文字を渡しつつ遷移し、
そちらで編集、再度TextViewを書き出すという流れです。

【現状】
フォーカスが当たったまま別のViewControllerを開いているので、
書き出した際にまたフォーカスが当たった時の記述が動く

【したいこと】-編集しました-
フォーカスが当たったときに
1、文字を渡す
2、TextViewのフォーカスを外す
3、画面遷移する
4、文章の編集
5、文字を渡す
6、もとの画面へ遷移する
(現在はここでTextViewに再度フォーカスが当たり、textViewShouldBeginEditingが呼ばれてしまう)

もとの画面へ遷移したあとに、フォーカスをあてない方法をぜひ教えてください。
よろしくお願いします。

//テキストビューにフォーカスが移った場合 func textViewShouldBeginEditing(textView: UITextView) -> Bool { print("テキストビュー触ってる") let lastMessage = self.letterSetView.subviews.last! as! Message let lastTxt = lastMessage.text let ms = storyboard?.instantiateViewControllerWithIdentifier("MessageEdit") as! MessageEditViewController ms.modalTransitionStyle = UIModalTransitionStyle.CoverVertical ms.senderTxt = lastTxt self.view.endEditing(true) //ここでテキストビューからフォーカスを外す記述を追加したい self.presentViewController(ms, animated: true, completion: nil) appDelegate.isMessageEditAdded = true return true }

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

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

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

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

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

guest

回答2

0

2、TextViewのフォーカスを外す
とありますが
そもそもここはUIButtonで設計したほうが
余計なdelegateを使わずに済みそうです。

投稿2017/03/03 05:04

pamipani

総合スコア11

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

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

0

ベストアンサー

対象のテキストビューの resignFirstResponder を呼び出してあげるとフォーカスが外れると思うのですがどうでしょうか。

投稿2016/01/12 04:14

YasuhiroMiyake

総合スコア1336

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

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

3buro

2016/01/12 05:34

コメントありがとうございます。 resignFirstResponderの記述を追加してみたのですが、どうやら一旦フォーカスは外れてはいるものの、画面遷移して文章を編集したあとにテキストビューの画面に戻ってくると、再度フォーカスが当たっている状態になり、func textViewShouldBeginEditing〜の記述が呼ばれてしまう…といった現象のようです。 この2度目のフォーカスを外し方はご存知でしょうか?
YasuhiroMiyake

2016/01/13 08:30

フォーカスについては少し試してみないと分かりません。 しかしながら、実現したい内容だけみるとそもそも最初の画面がテキストビューである理由がないように見えます。 そのためラベルを配置してその上にボタンなどを配置するようにレイアウトで実現するほうがスマートではないでしょうか。 それであればキーボードも表示されないしフォーカスの問題もクリア出来るように思えます。 テキストビューの見た目だけ採用したいということでしたら、(不確かですが)テキストビューのUser Interaction Enabled のチェックを外してイベントを発生させないようにして、また同様にボタンをテキストビューと同じサイズで配置してあげる方法でも良いのかなと思いました。 元のお悩みの答えになっておらず申し訳ないですが、参考になれば幸いです。
3buro

2016/01/14 00:39

コメントありがとうございました! 「テキストビューの上に同じサイズのボタンを配置する」という考えが思いつかなかったので、幅を広げるという意味でも助言は本当にありがたく思います。 親切にしてくださってありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問