2016-10-19 13 views
1

私はこの投稿Getting and Setting Cursor Position of UITextField and UITextView in Swiftを通過しましたが、問題を解決するにはテキストを選択しています。UITextFieldのカーソルの位置が正しくない(スウィフト)

私は引用された記事の例に従っていますが、私はまだ結果を見ません。 基本的なSingleViewApplicationをUITextFieldだけで作成しました。

テキストフィールドが、私はこの記事で説明する方法を使用してテキスト全体を選択しようと始めた@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を実行し、最後の行 開始位置.... と1を聞かせてライン に私のテキストフィールドの選択範囲を表示するには、2つのブレークポイントを入れて!続けてください。

それは私が効果的に私のテキストフィールドの範囲を変更することを確認し

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

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

しかし、UIには目に見える選択がなく、カーソルはtextFieldの最後にとどまります。

選択した範囲を示すUIを取得するには、何が欠けていますか?

基本的に、ユーザーが編集中に入力したときに、私のUItextFieldの特定のテキスト範囲を事前に選択したいとします。

答えて

0

ボタンアクション機能でこのコードを試すことができます。

textfield.selectAll(textfield) 

希望します!

+0

が行動を遅らせる:ここ

はスウィフト2バージョンです。 (:開始位置、へ:終了位置から) eld.selectAll(私は掲載元のコードのための作品を せ開始位置= textField.beginningOfDocument てみましょう終了位置= textField.endOfDocument textField.selectedTextRange = textField.textRange選択するために行動を遅らせる –

+0

textField) –

+0

および textFieldです。キーボードの後に​​範囲を設定する必要があり、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) 
} 
関連する問題