Swift:成为UITextField的第一响应者无法正常工作?

我已经创build了一个自定义UIViewController在故事板上的一个UITextField。 在viewDidLoad ,我将UITextFIeld设置为becomeFirstResponder ,什么都没有发生(没有键盘popup)。

然后我尝试调用resignFirstResponder() ,但它返回false。 接下来,我试图通过使用@上的代码循环所有子视图来find第first responder是谁, 而不使用私有API获取当前的第一响应者 。 事实certificate,没有任何子视图是第一响应者。

我的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. } } 

尽可能简单…为什么不是键盘开始! 我有一件事是自动布局,但我不知道是否会影响键盘popup。

我只是通过调用self.tf.becomeFirstResponder() indside viewDidLoad()函数testing它的文本字段,它的工作非常好。 你需要按下command + K来切换你的键盘,就像刚刚指出的nflacco一样,并禁用模拟器中的硬件键盘:

  1. iOS模拟器 – >硬件 – >键盘
  2. 取消选中“连接硬件键盘”

我认为

 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() } }