2017-12-16 22 views
1

タイトルは本当にすべてを言います。私は、次のようにのviewDidLoadからテキストを選択しようとしました:アプリの読み込み時にテキストを選択するにはどうすればよいですか?

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

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

} 

しかし、これは動作しません。カーソルは最後の位置に表示されます。誰かがこれを解決するアイデアを持っていますか?

答えて

1

ビューが読み込まれると時間がかかるようです。ソリューションの下に試してみてください。

まず、あなたのクラスでの関数の下に追加:以下に示すように

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

次にviewWillAppear方法でそれを使用する:私はちょうど1秒でそれを遅らせてきた

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

+0

ありがとうございます!それは完全に動作します。それを1秒遅らせるのではなく、私はそれを0.01秒だけ遅延させました。できるだけ早くです。再度、感謝します! – user9059405

関連する問題