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

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

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

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

Swift

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

Q&A

解決済

1回答

2626閲覧

UIToolBarにUITextFieldを挿入してキーボード上に表示したい

tomato513

総合スコア12

Xcode

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

Swift

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

0グッド

0クリップ

投稿2019/01/09 10:48

編集2019/01/09 10:48

ご覧いただきありがとうございます。

swift

1 2import UIKit 3 4class ViewController: UIViewController , UITextFieldDelegate{ 5 6 // このopenButtonをクリックしたらキーボードを表示させたい 7 @IBOutlet var openButton: UIButton! 8 9 let toolBar: UIView = UIView() 10 let barTextField: UITextField = UITextField() 11 12 override func viewDidLoad() { 13 super.viewDidLoad() 14 15     // ツールバー 16 toolBar.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: 60) 17 toolBar.backgroundColor = UIColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 1.0) 18 toolBar.layer.borderWidth = 0.5 19 toolBar.layer.borderColor = UIColor.lightGray.cgColor 20 21 // テキストフィールドを作成 22 barTextField.frame = CGRect(x: 50, y: 10, width: self.view.frame.width - 65, height: 40) 23 barTextField.placeholder = "コメント..." 24 barTextField.borderStyle = .none 25 barTextField.layer.borderColor = UIColor.lightGray.cgColor 26 barTextField.layer.borderWidth = 1 27 barTextField.layer.masksToBounds = true 28 29 // アイテムをツールバーに追加 30 toolBar.addSubview(barTextField) 31 32 // ツールバーをビューに設定 33 barTextField.inputAccessoryView = toolBar 34 barTextField.delegate = self 35 } 36 37 @IBAction func openKeyboard(_ sender: Any) { 38     // ここでキーボードが出てきてviewDidLoadで生成したToolBarの中のTextFieldにフォーカスがあった状態でキーボードと共に出てくる(と思っていました、、、) 39 barTextField.becomeFirstResponder() 40 } 41 42} 43 44

Swiftを学び始めて日が浅く 「何言ってんだこいつ」 と思われるかもしれませんがご容赦ください。
SNSなどでよくある、ボタンを押すとキーボードと共にTextFieldが出てくるということを行いたいのですが、なぜかキーボードも出てこず、沈黙しております。

試したことは、TextFieldを別に用意して(SwiftでTextFieldを作らずStoryboard上に配置している)、そのTextFieldに対して、inputAccessoryView = toolBar , delegate = self 、 becomeFirstResponder()
すると、キーボードと共にToolBarが出てきて中には動的に生成したTextFieldも存在していました。

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

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

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

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

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

guest

回答1

0

ベストアンサー

少し試してみました。
自分のtextFieldを開く作業で、
自分をinputviewに表示することはできなさそうですね。

2個目のtextFieldを用意するのは、
入力文字を受け渡ししなきゃいけなくなりますが、
リアルタイムで受け渡しはできないので、避けるべきと思われます。

なので、したいことを考えると、普通のUIViewを用意し、
textFieldを配置し、最初はself.viewの外側に描出し、
ボタンのタップと共に下から上にスライドするようにすればいいのではないでしょうか?
大抵はというか、みんなこの方法を取っていると思いますよ。

投稿2019/01/09 12:44

編集2019/01/09 12:58
hameji001

総合スコア639

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問