2015-11-26 9 views
5

以下のコードを使用していますが、何らかの理由で機能しません。何か案が?Swiftを使用してUITextFieldのすべてのテキストを選択する方法

textField.text = "Hello" 

textField.becomeFirstResponder() 

textField.selectedTextRange = self.textField.textRangeFromPosition(self.textField.beginningOfDocument, toPosition: self.textField.endOfDocument) 

これは私が得るものです:

This is what I get:

+1

「textField」と「self.textField」が異なる可能性はありますか? – Michael

答えて

2

はこの作品を願っています。

func textFieldDidBeginEditing(textField: UITextField) { 
     textField.selectedTextRange = self.textField.textRangeFromPosition(self.textField.beginningOfDocument, toPosition: self.textField.endOfDocument) 
    } 
3

私は同じ問題を抱えていたし、私はこのような解決:

まず、 "自己"

textField.delegate = self 
にあなたのTextFieldデリゲートを設定し、その後、あなたのViewControllerに

class ViewController : UITextFieldDelegate 

をUITextFieldDelegateを実装

次に、この関数をViewControllerクラスに追加します

func textFieldDidBeginEditing(textField: UITextField) { 
    textField.selectedTextRange = textField.textRangeFromPosition(textField.beginningOfDocument, toPosition: textField.endOfDocument) 
} 

あなたは既にこのように、あなただけのスイッチを使用することができ、あなたがこのように動作したくない他のTextFieldのための代理人としてのViewControllerを使用している場合:他の

func textFieldDidBeginEditing(textField: UITextField) { 
    switch textField { 
     case yourTextField: 
       textField.selectedTextRange = textField.textRangeFromPosition(textField.beginningOfDocument, toPosition: textField.endOfDocument) 
       break; 

     case default: 
       break; 
    } 
} 
2

なし答えは私のために働いた。それは私が代わりにviewDidLoadviewDidAppearに私のコードを配置するために必要なことが判明:

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 

    textField.becomeFirstResponder() 
    textField.selectedTextRange = textField.textRange(from: textField.beginningOfDocument, to: textField.endOfDocument) 

} 

私も他の人が役に立つかもしれないすべてのテキストを選択するには、いくつかの追加の方法があることを学びました:

// Select all without showing menu (Cut, Copy, etc) 
textField.SelectAll(nil) 

// Select all and show menu 
textField.SelectAll(self) 
0

更新swift 4から2017

func textFieldDidBeginEditing(_ textField: UITextField) 
    { 
     textField.selectedTextRange = textField.textRange(from: textField.beginningOfDocument, to: textField.endOfDocument) 
    } 
関連する問題