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

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

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

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

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

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

解決済

1回答

360閲覧

CustomAertの入力並びに表示について

退会済みユーザー

退会済みユーザー

総合スコア0

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

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

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

0クリップ

投稿2018/07/09 08:06

編集2018/07/10 06:28

swift

1import UIKit 2 3class numberView: UIView { 4 5 @objc func proteinX(_ sender: UITextField) { 6 if let text = sender.text { 7 protein.text = "P: " + ptxt.text! 8 print(text) 9 } 10 } 11 12 @objc func fatX(_ sender: UITextField) { 13 if let text = sender.text { 14 fat.text = "F: " + ftxt.text! 15 print(text) 16 } 17 } 18 19 @objc func carboX(_ sender: UITextField) { 20 if let text = sender.text { 21 carbo.text = "C: " + ctxt.text! 22 print(text) 23 } 24 } 25 26 @objc func kcalX(_ sender: UITextField) { 27 if let text = sender.text { 28 total.text = "K: " + ktxt.text! + " kcal" 29 print(text) 30 } 31 } 32 33 override init(frame: CGRect){ 34 super.init(frame: frame) 35 loadNib() 36 } 37 38 required init(coder aDecoder: NSCoder) { 39 super.init(coder: aDecoder)! 40 loadNib() 41 } 42 43 func loadNib(){ 44 let view = Bundle.main.loadNibNamed("numberViewController", owner: self, options: nil)?.first as! UIView 45 46 ptxt.addTarget(self, action: #selector(self.proteinX(_:)), for: .editingChanged) 47 ftxt.addTarget(self, action: #selector(self.fatX(_:)), for: .editingChanged) 48 ctxt.addTarget(self, action: #selector(self.carboX(_:)), for: .editingChanged) 49 ktxt.addTarget(self, action: #selector(self.kcalX(_:)), for: .editingChanged) 50 51 ptxt.isHidden = false 52 ftxt.isHidden = true 53 ctxt.isHidden = true 54 ktxt.isHidden = true 55 56 57 view.frame = self.bounds 58 self.addSubview(view) 59 } 60 61 @IBAction func choice(_ sender: Any) { 62 63 switch (sender as AnyObject).selectedSegmentIndex { 64 case 0: 65 ptxt.isHidden = false 66 ftxt.isHidden = true 67 ctxt.isHidden = true 68 ktxt.isHidden = true 69 70 print("1") 71 case 1: 72 ptxt.isHidden = true 73 ftxt.isHidden = false 74 ctxt.isHidden = true 75 ktxt.isHidden = true 76 ftxt.becomeFirstResponder() 77 78 print("2") 79 case 2: 80 ptxt.isHidden = true 81 ftxt.isHidden = true 82 ctxt.isHidden = false 83 ktxt.isHidden = true 84 ctxt.becomeFirstResponder() 85 86 print("3") 87 case 3: 88 ptxt.isHidden = true 89 ftxt.isHidden = true 90 ctxt.isHidden = true 91 ktxt.isHidden = false 92 ktxt.becomeFirstResponder() 93 94 print("3") 95 default: 96 print("nil") 97 } 98 } 99 100 101 @IBAction func one(_ sender: Any) { 102 103 let value = ptxt.text! + "1" 104 if let price = Int(value) { 105 ptxt.text = "(price)" 106 protein.text = "P: " + ptxt.text! 107 } 108 let value2 = ftxt.text! + "1" 109 if let price = Int(value2) { 110 ftxt.text = "(price)" 111 fat.text = "F: " + ftxt.text! 112 } 113 let value3 = ctxt.text! + "1" 114 if let price = Int(value3) { 115 ctxt.text = "(price)" 116 carbo.text = "C: " + ctxt.text! 117 } 118 let value4 = ktxt.text! + "1" 119 if let price = Int(value4) { 120 ktxt.text = "(price)" 121 total.text = "K: " + ktxt.text! + " kcal" 122 } 123 } 124 125 126  //2~9は字数制限の問題上、省略しています。 127 } 128 129 @IBAction func zero(_ sender: Any) { 130 let value = ptxt.text! + "0" 131 if let price = Int(value) { 132 ptxt.text = "(price)" 133 protein.text = "P: " + ptxt.text! 134 } 135 let value2 = ftxt.text! + "0" 136 if let price = Int(value2) { 137 ftxt.text = "(price)" 138 fat.text = "F: " + ftxt.text! 139 } 140 let value3 = ctxt.text! + "0" 141 if let price = Int(value3) { 142 ctxt.text = "(price)" 143 carbo.text = "C: " + ctxt.text! 144 } 145 let value4 = ktxt.text! + "0" 146 if let price = Int(value4) { 147 ktxt.text = "(price)" 148 total.text = "K: " + ktxt.text! + " kcal" 149 } 150 } 151 152 @IBAction func point(_ sender: Any) { 153 154 let value = ptxt.text! + "." 155 if let price = Double(value) { 156 ptxt.text = "(price)" 157 protein.text = "P: " + ptxt.text! 158 } 159 let value2 = ftxt.text! + "." 160 if let price = Double(value2) { 161 ftxt.text = "(price)" 162 fat.text = "F: " + ftxt.text! 163 } 164 let value3 = ctxt.text! + "." 165 if let price = Double(value3) { 166 ctxt.text = "(price)" 167 carbo.text = "C: " + ctxt.text! 168 } 169 let value4 = ktxt.text! + "." 170 if let price = Double(value4) { 171 ktxt.text = "(price)" 172 total.text = "K: " + ktxt.text! + " kcal" 173 } 174 175 } 176}

実現したい事

0. 小数点以下の入力をしたい

出来ている事/困っている事

0.

1 2### 改善点 3以下のようにすることで小数点以下の値まで入力出来るようになりました。 4しかし、クリアボタンをタップした時に数字は消えるのですが小数点だけ残ってしまいます。 5```swift 6func addnumber(number: String) { 7 var textnumber = ptxt.text! 8 textnumber = textnumber + number 9 ptxt.text = textnumber 10 protein.text = "P: " + textnumber 11 } 12 13 func addnumber2(number2: String) { 14 var textnumber2 = ftxt.text! 15 textnumber2 = textnumber2 + number2 16 ftxt.text = textnumber2 17 fat.text = "F: " + textnumber2 18 } 19 20 func addnumber3(number3: String) { 21 var textnumber3 = ctxt.text! 22 textnumber3 = textnumber3 + number3 23 ctxt.text = textnumber3 24 carbo.text = "C" + textnumber3 25 } 26 func addnumber4(number4: String) { 27 var textnumber4 = ktxt.text! 28 textnumber4 = textnumber4 + number4 29 ktxt.text = textnumber4 30 total.text = textnumber4 + "kcal" 31 } 32 33 34 @IBAction func one(_ sender: Any) { 35 36 addnumber(number: "1") 37 addnumber2(number2: "1") 38 addnumber3(number3: "1") 39 addnumber4(number4: "1") 40 41 } 42 43 @IBAction func two(_ sender: Any) { 44 addnumber(number: "2") 45 46 } 47 //~~省略~~ 48 49 @IBAction func zero(_ sender: Any) { 50 addnumber(number: "0") 51 52 } 53 54 @IBAction func point(_ sender: Any) { 55 56 addnumber(number: ".") 57 58 } 59 60 @IBAction func clear(_ sender: Any) { 61 ptxt.text! = "" 62 } 63} 64```

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

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

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

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

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

guest

回答1

0

ベストアンサー

例えば20.5を入力しようとした時、.を入植した時点ではtextは20.となります。その状態でDoubleに変換しようとすると20になるか変換できないかのどちらかになるからかと思います。
1つの方法としては、.を入力された段階ではtextには反映せずフラグを立てるなどして次の数字が入力された時に20.5のように反映するのが良いのかと思います。

投稿2018/07/09 08:24

hiro_n

総合スコア70

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

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

退会済みユーザー

退会済みユーザー

2018/07/10 06:27 編集

小数点に関してはstring型にすることによって入力出来るようになりました。 そして計算したい場合に限り、doubel型なり、float型にする事にしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問