##【環境】
Swift5
Xcode:11.3.1
##【現象】
あるViewの上に別のViewを被せて、ボタンをタップしたら被せたViewの位置をanimateで動かしています。
しかしなぜか、UITextFieldに値を入力すると、被せたViewの移動した位置がリセット(元の位置になる)されてしまいます。
##調査したこと
animateのロジックは以下です。
UIView.animate(withDuration: 0.5, delay: 0.0, animations: { self.(被せたView).frame.origin.y += 100.0 }, completion: nil)
他のUIButtonをタップしたり、UISegmentedControlをタップするだけならリセットは発生しません。
UITextFieldにフォーカスするだけでも起こらないので、UITextFieldに値が入る時に発生すると思うのですが、なぜそうなるのか、それ以上原因の追究ができませんでした。
どなたかご存知の方がいたら教えていただけると助かります。
よろしくお願いいたします。
##【追記:ViewController】
UITextFieldに関係あるところだけ抜粋します。
calc()の部分はコメントアウトしても今回の現象は発生したので関係ないと思います。
@IBOutlet weak var money: UITextField! // 入力桁数制限処理 @IBAction func moneyEdintingChanged(_ sender: UITextField) { guard let strInputMoney = sender.text else { return } sender.text = String(strInputMoney.prefix(maxAmountLength)) } // フォーカスイン処理 @IBAction func moneyEditingDidBegin(_ sender: UITextField) { let strInputMoney :String = sender.text ?? "" sender.text = self.exceptComma(strMoney: strInputMoney) } // フォーカスアウト処理 @IBAction func moneyEditingDidEnd(_ sender: UITextField) { let intInputMoney: Int = Int(sender.text!) ?? 0 guard intInputMoney != 0 else { return } sender.text = self.addComma(intMoney: intInputMoney) // 計算処理 self.calc() } // 3桁区切りのカンマがあれば除外する func exceptComma(strMoney: String) -> String { return strMoney.replacingOccurrences(of: ",", with: "") } // 3桁区切りのカンマを付ける func addComma(intMoney: Int) -> String { let formatter = NumberFormatter() formatter.numberStyle = NumberFormatter.Style.decimal formatter.groupingSeparator = "," formatter.groupingSize = 3 return formatter.string(from: NSNumber.init(integerLiteral: intMoney))! } func calc() { // 色々計算する } // キーボードを非表示にする override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { self.view.endEditing(true) }
回答2件
あなたの回答
tips
プレビュー