2017-12-16 6 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 방법에서 사용 : 난 그냥 일초하여 지연 한

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 초 지연시키는 대신, .01 초 지연시켜 최대한 빨리 처리합니다. 다시 한 번 감사드립니다! – user9059405

관련 문제