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

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

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

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Xcode

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

Swift

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

解決済

IBOutlet Strong

Udemy.seitaro
Udemy.seitaro

総合スコア11

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Xcode

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

Swift

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

1回答

0グッド

0クリップ

976閲覧

投稿2020/06/21 09:21

編集2020/06/21 14:55

こんにちは
いつも教えてくださる方ありがとうございます。
今日も質問すみません。答えてくださる方いましたらよろしくお願い致します。
1 TextFieldでこの様な表記が出てしまいpasswordのTextFieldの部分が入力できなくなってしまいました。
2 また、一つ上のemailのTextFieldの部分で@マークが押せないという事が起きてしまっています。
どなたか改善方法の方教えていただけますでしょうか。
お手数ですがよろしくお願い致します。

イメージ説明

コードがこちらになります。お手数ですがよろしくお願い致します。

swift

1import UIKit 2import Firebase 3import PKHUD 4 5class ViewController: UIViewController { 6 7 @IBOutlet weak var registerButton: UIButton! 8 @IBOutlet weak var emailTextField: UITextField! 9 @IBOutlet weak var passwordTextField: UITextField! 10 @IBOutlet weak var usernameTextField: UITextField! 11 12 @IBAction func tappedRegisterButton(_ sender: Any) { 13 handleAuthToFirebase() 14 } 15 16 @IBAction func tappedAlreadyHaveAccountButton(_ sender: Any) { 17 pushToLoginViewController() 18 } 19 20 override func viewDidLoad() { 21 super.viewDidLoad() 22 setupViews() 23 setupNotificationObserver() 24 } 25 26 override func viewWillAppear(_ animated: Bool) { 27 super.viewWillAppear(animated) 28 29 navigationController?.navigationBar.isHidden = true 30 } 31 32 private func pushToLoginViewController() { 33 let storyBoard = UIStoryboard(name: "Login", bundle: nil) 34 let homeViewController = storyBoard.instantiateViewController(identifier: "LoginViewController") as! LoginViewController 35 navigationController?.pushViewController(homeViewController, animated: true) 36 } 37 38 private func setupViews() { 39 registerButton.isEnabled = false 40 registerButton.layer.cornerRadius = 10 41 registerButton.backgroundColor = UIColor.rgb(red: 255, green: 221, blue: 187) 42 43 emailTextField.delegate = self 44 passwordTextField.delegate = self 45 usernameTextField.delegate = self 46 47 registerButton.addTarget(self, action: #selector(tappedAlreadyHaveAccountButton), for: .touchUpInside) 48 } 49 50 @objc private func tappedRegisterButton() { 51 print("something") 52 } 53 54 private func setupNotificationObserver() { 55 NotificationCenter.default.addObserver(self, selector: #selector(showKeyboard), name: UIResponder.keyboardWillShowNotification, object: nil) 56 NotificationCenter.default.addObserver(self, selector: #selector(hideKeyboard), name: UIResponder.keyboardWillHideNotification, object: nil) 57 } 58 59 private func handleAuthToFirebase() { 60 HUD.show(.progress, onView: view) 61 guard let email = emailTextField.text else { return } 62 guard let password = passwordTextField.text else { return } 63 64 Auth.auth().createUser(withEmail: email, password: password) { (res, err) in 65 if let err = err { 66 print("認証情報の保存に失敗しました。(err)") 67 HUD.hide { (_) in 68 HUD.flash(.error, delay: 1) 69 } 70 return 71 } 72 self.addUserInfoToFirestore(email: email) 73 } 74 } 75 76 // Firestoreにユーザー情報を保存 77 private func addUserInfoToFirestore(email: String) { 78 guard let uid = Auth.auth().currentUser?.uid else { return } 79 guard let name = self.usernameTextField.text else { return } 80 81 let docData = ["email": email, "name": name, "createdAt": Timestamp()] as [String : Any] 82 let userRef = Firestore.firestore().collection("users").document(uid) 83 84 userRef.setData(docData) { (err) in 85 if let err = err { 86 print("Firestoreへの保存に失敗しました。(err)") 87 HUD.hide { (_) in 88 HUD.flash(.error, delay: 1) 89 } 90 return 91 } 92 self.fetchUserInfoFromFirestore(userRef: userRef) 93 } 94 } 95 96 // Firestoreからユーザー情報を取得 97 private func fetchUserInfoFromFirestore(userRef: DocumentReference) { 98 userRef.getDocument { (snapshot, err) in 99 if let err = err { 100 print("ユーザー情報の取得に失敗しました。(err)") 101 HUD.hide { (_) in 102 HUD.flash(.error, delay: 1) 103 } 104 return 105 } 106 107 guard let data = snapshot?.data() else { return } 108 let user = User.init(dic: data) 109 print("ユーザー情報の取得ができました。(user.name)") 110 HUD.hide { (_) in 111 HUD.flash(.success, onView: self.view, delay: 1) { (_) in 112 self.presentToHomeViewController(user: user) 113 } 114 } 115 } 116 } 117 118 private func presentToHomeViewController(user: User) { 119 let storyBoard = UIStoryboard(name: "Home", bundle: nil) 120 let homeViewController = storyBoard.instantiateViewController(identifier: "HomeViewController") as! HomeViewController 121 homeViewController.user = user 122 homeViewController.modalPresentationStyle = .fullScreen 123 self.present(homeViewController, animated: true, completion: nil) 124 } 125 126 @objc func showKeyboard(notification: Notification) { 127 let keyboardFrame = (notification.userInfo![UIResponder.keyboardFrameEndUserInfoKey] as AnyObject).cgRectValue 128 129 guard let keyboardMinY = keyboardFrame?.minY else { return } 130 let registerButtonMaxY = registerButton.frame.maxY 131 let distance = registerButtonMaxY - keyboardMinY + 20 132 133 let transform = CGAffineTransform(translationX: 0, y: -distance) 134 135 UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: [], animations: { 136 self.view.transform = transform 137 }) 138 } 139 140 @objc func hideKeyboard() { 141 UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: [], animations: { 142 self.view.transform = .identity 143 }) 144 } 145 146 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 147 self.view.endEditing(true) 148 } 149 150} 151 152extension ViewController: UITextFieldDelegate { 153 154 func textFieldDidChangeSelection(_ textField: UITextField) { 155 let emaillIsEmpty = emailTextField.text?.isEmpty ?? true 156 let passwordIsEmpty = passwordTextField.text?.isEmpty ?? true 157 let usernameIsEmpty = usernameTextField.text?.isEmpty ?? true 158 159 if emaillIsEmpty || passwordIsEmpty || usernameIsEmpty { 160 registerButton.isEnabled = false 161 registerButton.backgroundColor = UIColor.rgb(red: 255, green: 221, blue: 187) 162 } else { 163 registerButton.isEnabled = true 164 registerButton.backgroundColor = UIColor.rgb(red: 255, green: 141, blue: 0) 165 } 166 } 167 168} 169

調べてみたのですがなかなか解決に辿り着く方法が見当たらなかったので教えてくださると幸いです。
よろしくお願い致します。

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

hayabusabusash

2020/06/22 07:19

email、password、 username のテキストフィールドの contentType と keyboardType はそれぞれどうなっていますか? コードで指定していないみたいなので、Storyboard 上で指定していると思います。 一度確認してみてもらえませんか?
Udemy.seitaro

2020/06/23 07:29

hayabusabusash様 返信遅くなりすみません。 email、password、username のテキストフィールドの contentTypeはどこに記載されているのでしょうか。 検索かけても出てこなかったので教えていただければ幸いです。 よろしくお願い致します。
Udemy.seitaro

2020/06/23 07:56

hayabusabusash様 わざわざUrl教えてくださりありがとうございます。 こちらのQiitaを参考にしたら解決できました。 ご丁寧にありがとうございました。
hayabusabusash

2020/06/23 07:59

お、よかったです???? 後でこの質問を見た人のためにも自己解決にして、解決した手順を書いておくといいと思います!
Udemy.seitaro

2020/06/23 08:04

hayabusabusash様 ご丁寧にありがとうございました! また、とてもわかりやすい説明をありがとうございました。とてもわかりやすかったのでフォローさせていただきました。 上の件了解しました。しっかりhayabusabusash様から学んだことを記載してとおこうと思います。 今後ともよろしくお願い致します。

回答1

0

自己解決

こちらのサイトを参考にtextfieldのtypeを確認する。

hayabusabush様教えていただきありがとうございました。

投稿2020/06/23 08:06

Udemy.seitaro

総合スコア11

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Xcode

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

Swift

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