Swift アラート(ダイアログ)内でテキストフィールドの初期フォーカスを設定する方法
Q&A
Closed
解決したいこと
Swiftで開発中のアプリにおいて、アラート?ダイアログ?を使ってユーザーIDとパスワードの入力を行うようにしており、再ログイン時には初期値にログインしていたユーザーIDが入るように実装したいです。
そのため、再ログイン時はユーザーIDが入力されている状態で、アラート表示時のテキストフィールドの初期フォーカスはパスワード入力欄にしたいと考えています。
ただ、フォーカスの変更を行えるであろうコードを加えたのですが、フォーカスが変わりませんでした。
ソースコード
下のようなコードで実装しようとしましたが、初期フォーカスはユーザーID入力欄のままでした。
@IBAction func alertBtn(_ sender: Any) {
let alert = UIAlertController(title: "ログイン", message: "ユーザーIDとパスワードを入力してください", preferredStyle: .alert)
alert.addTextField(configurationHandler: { textField in
textField.placeholder = "ユーザーID"
})
alert.addTextField(configurationHandler: { textField in
textField.placeholder = "パスワード"
})
// テキストフィールドが生成される順番を変え、フォーカスを変える
// 後ほど、ユーザーIDの状態で処理を分岐する予定
alert.textFields?[1].becomeFirstResponder()
let submit = UIAlertAction(title: "送信", style: .default, handler: { (action) -> Void in
print("Submit button tapped")
if let userId = alert.textFields?[0].text {
print("userId: \(userId)")
}
if let password = alert.textFields?[1].text {
print("Password: \(password)")
}
})
let cancel = UIAlertAction(title: "キャンセル", style: .cancel)
alert.addAction(submit);
alert.addAction(cancel);
self.present(alert, animated: true, completion: nil) }
自分なりに調べてみましたが、実装方法がよく分かりませんでした。
アラート内のテキストフィールドのフォーカスを変える方法があれば教えていただきたいです。
よろしくお願いいたします。
0