Swift:成为UITextField上的第一响应者?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift:成为UITextField上的第一响应者?相关的知识,希望对你有一定的参考价值。

我在Storyboard上创建了一个带有一个UITextField的自定义UIViewController。在viewDidLoad上,我将UITextFIeld设置为becomeFirstResponder,没有任何反应(没有键盘弹出)。

然后我尝试调用resignFirstResponder(),但它返回false。接下来,我尝试使用@ first responder上的代码通过循环所有子视图来找到Get the current first responder without using a private 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.
    }
}

就这么简单......为什么不是键盘出现!!!我有一件事是自动布局,但我不确定这是否会影响键盘弹出。

答案

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

  1. ios模拟器 - >硬件 - >键盘
  2. 取消选中“连接硬件键盘”
另一答案

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

希望这有助于有人遇到同样的问题。

以上是关于Swift:成为UITextField上的第一响应者?的主要内容,如果未能解决你的问题,请参考以下文章

Swift 如何让所有 uiTextfield 上的第一响应者辞职

UITextField 没有成为集合视图中的第一响应者

UITextField 不能成为 UITableView 中的第一响应者

使 UITextField 子视图成为 UITableView 中的第一响应者时出错

成为没有动画的第一响应者

iOS - UIButton 成为打开键盘的第一响应者