2016-10-19 3 views
1

나는이 게시물 Getting and Setting Cursor Position of UITextField and UITextView in Swift을 통해 갔고 문제는 텍스트를 선택하는 중입니다.UITextField의 커서 위치 설정이 작동하지 않습니다 (빠른)

나는 언급 된 게시물의 예를 따르며 나는 아직 어떤 결과도 보지 못했다. 기본 UITextField가있는 기본 SingleViewApplication을 만들었습니다.

텍스트 필드가 나는이 게시물에 기술 된 방법을 사용하여 전체 텍스트를 선택하려고 시작 했 @IBAction 편집에서

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    textField.text = "foobar" } 

있는 viewDidLoad

에 "는 foobar"로 설정되어, 아래를 참조하십시오.

@IBAction func EDB(_ sender: UITextField) { 
    let startPosition = textField.beginningOfDocument 
    let endPosition = textField.endOfDocument 
    textField.selectedTextRange = textField.textRange(from: startPosition, to: endPosition ) 
} 

나는 내 textField의 모든 텍스트를 선택합니다.

그렇지 않았습니다.

나는 그 중단 점은 포 textField.selectedTextRange을 실행 startPosition입니다 .... 한 마지막 줄 을 할 수 라인에 내에 textField의 선택 범위를 표시하는 두 개의 브레이크 포인트를 넣어! 계속하십시오.

는 I 효과적으로 내 할 TextField 범위를 변경하는 것이 확인

< _UITextKitTextRange : 0x7fa42bb0d140> (6, 0) F

< _UITextKitTextRange : 0x7fa42b922640> (0, 6) F

그러나 UI에는 눈에 보이는 선택이 없으며 커서는 내 textField의 끝 부분에 있습니다.

내가 선택한 범위를 보여주는 UI를 보려면 무엇이 누락 되었습니까?

기본적으로 사용자가 편집 할 때 내 UItextField의 특정 텍스트 범위를 미리 선택하고 싶습니다.

답변

0

버튼 액션 기능에서이 코드를 시도해 볼 수 있습니다.

textfield.selectAll(textfield) 

희망 하시겠습니까!

+0

: 여기

는 스위프트 2 버전입니다. (: startPosition입니다,에 : endPosition에서) eld.selectAll (I 게시 원래 코드에 대한 작품을 할 startPosition입니다 = textField.beginningOfDocument 할 endPosition = textField.endOfDocument textField.selectedTextRange = textField.textRange 선택 작업을 지연 –

+0

textField) –

+0

및 textField입니다.selectAll (textField) solution 그래서 키보드와 textField가 새로 고쳐진 후 범위를 설정해야한다고 가정하고 일찍 끝나면 UI가 범위를 고려하지 않습니다 –

0

범위를 다른 방법으로 줄이고 지연으로 호출하십시오. 나는 당신의 사건에 대해 정확히 알지 못하지만, 약간의 사정이 늦어서 나를 도왔습니다. 작업을 지연하는 것은 문제를 해결했다

@IBAction func EDB(sender: UITextField) { 
    performSelector(#selector(selectRange), withObject: nil, afterDelay: 0.01) 
} 

@objc private func selectRange() { 
    let startPosition = textField.beginningOfDocument 
    let endPosition = textField.endOfDocument 
    textField.selectedTextRange = textField.textRange(from: startPosition, to: endPosition) 
} 
관련 문제