Storyboardに1つのUITextFieldを持つカスタムUIViewControllerを作成しました。 viewDidLoad
で、UITextFIeldをbecomeFirstResponder
に設定しましたが、何も起こりませんでした(キーボードがポップアップしませんでした)。
次にresignFirstResponder()
を呼び出してみましたが、falseを返しました。次に、誰がfirst responder
は、@上のコードを使用してすべてのサブビューをループすることです- プライベートAPIを使用せずに現在のファーストレスポンダーを取得します 。どのサブビューも最初のレスポンダーではないことがわかりました。
ストーリーボードのマイViewController
私のコード
class BLTestViewController: UIViewController, UITextFieldDelegate {
@IBOutlet var tf: UITextField
override func viewDidLoad() {
super.viewDidLoad()
tf.delegate = self
tf.becomeFirstResponder()
// Do any additional setup after loading the view.
}
}
簡単なこと...キーボードが登場しないのはなぜですか?私がしていることの1つは自動レイアウトですが、キーボードのポップアップに影響するかどうかはわかりません。
self.tf.becomeFirstResponder()
indside viewDidLoad()
functionを呼び出して、テキストフィールドでテストしました。 nflaccoが指摘したようにcommand + Kを押してキーボードを切り替える必要があり、シミュレータでハードウェアキーボードを次のように無効にします。
私のために働いたSwift 4
それを試してみてください
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
DispatchQueue.main.async {
self.textView.becomeFirstResponder()
}
}
おもう
class BLTestViewController: UIViewController, UITextFieldDelegate {
@IBOutlet var tf: UITextField
override func viewDidLoad() {
super.viewDidLoad()
tf.delegate = self
self.focustf()
// Do any additional setup after loading the view.
}
func focustf(){
self.tf.becomeFirstResponder()
}
}
Swift 4およびiOS 11
私の場合、私が試したことは重要ではありません。これを試すまで、最初のレスポンダーを設定できませんでした。
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
if cell.isKind(of: YOURTABLEVIEWCELL.self) {
if let yourCell = cell as? YOURTABLEVIEWCELL{
yourCell.yourUiTextField.becomeFirstResponder()
}
}
}
これが誰かが同じ問題を抱えているのを助けることを願っています。
キーボードを開くにはcommand + shift + kを押します。