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

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

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

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

Q&A

解決済

1回答

637閲覧

swift3でTextFieldのframe.origin.yが正確に取れない

yamayamak

総合スコア131

Swift

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

0グッド

0クリップ

投稿2017/11/17 10:31

画面上に複数のTextFieldが存在するのですが、上下の位置が異なる2つのTextFieldをアクティブにしているのですが、frame.origin.yが正確に取れません。
Tagを表示させていますが正確にTextFieldはアクティブを取得できているように見えます。
画面は縦向きに利用していて、キーボードが現れた時に、画面全体をずらす通常の処理です。

Stack Viewを画面上で2重(背後に画像を配置)に重ねたり、多用していますが関係しますでしょうか?
何か気づいたことがあればアドバイスをお願いします。

swift

1 var txtActiveField = UITextField() 2 //UITextFieldが編集された直後に呼ばれる. 3 func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { 4 txtActiveField = textField 5 print (txtActiveField.tag) 6 return true 7 } 8 // キーボードが現れた時に、画面全体をずらす。 9 func keyboardWillShow(notification: Notification?) { 10 print("テキストフィールドの下辺:((txtActiveField.frame.origin.y))") 11 // 画面ズラす処理 12 }

print (txtActiveField.tag)は正確にTextFieldのタグを出力していますが
print("テキストフィールドの下辺:((txtActiveField.frame.origin.y))")
が何故か毎回"テキストフィールドの下辺:(18.0)"と表示され、Stack Viewを表示???しているのかと思っています。。。

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

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

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

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

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

guest

回答1

0

自己解決

知りませんでしたが、convertする必要があったようです。

swift

1let checkTextframe = txtActiveField.convert(txtActiveField.frame, to: self.view) 2// checkTextframe.origin.y で、txtActiveFieldのY座標が取得できる

投稿2017/11/17 12:25

yamayamak

総合スコア131

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問