如何在应用加载时 select 文本?

How to select text upon app loading?

标题真的说明了一切。我尝试通过以下方式从 viewDidLoad 中选择文本:

override func viewDidLoad() {
    ...
    guessField.text = "    "

    guessField.becomeFirstResponder()
    guessField.selectedTextRange = guessField.textRange(from: guessField.beginningOfDocument, to: guessField.position(from: guessField.endOfDocument, offset: -3)!)

}

但是,这不起作用;光标刚出现在最后一个位置。有没有人有解决这个问题的想法?

您的视图加载后似乎需要一些时间。尝试以下解决方案:

首先在您的 class 中添加以下功能:

func delayWithSeconds(_ seconds: Double, completion: @escaping () -> ()) {
    DispatchQueue.main.asyncAfter(deadline: .now() + seconds) {
        completion()
    }
}

然后在viewWillAppear方法中使用如下图:

override func viewWillAppear(_ animated: Bool) {

    delayWithSeconds(1) {
        self.guessField.text = "    "

        self.guessField.becomeFirstResponder()
        self.guessField.selectedTextRange = self.guessField.textRange(from: self.guessField.beginningOfDocument, to: self.guessField.position(from: self.guessField.endOfDocument, offset: -3)!)
    }
}

刚刚延迟了1秒