2016-10-25 15 views
0

ViewControllerは、textNameという2つのTextFieldから構成されます。& textEmail。 View Controllerは、textNameにカーソルを合わせて読み込みます。 textNameには、事前に入力された単語「@ gmail.com」が含まれています。UITextFieldの先頭のカーソル

打撃キーボードの戻り値textNameからのキー、フォーカスはTextfield textEmailに移動されます。ここではデフォルトでカーソルは "@ gmail.com"という単語の後に置かれます

私は最初にカーソルを置いておきたいと思います。 @ gmail.comの前@

ここに私のコードです。 textNameからリターンキーを押すと、カーソルはtextEmailの先頭に移動します。しかし、textEmailを直接タップすると、入力済みの単語の後ろにカーソルが表示されます。私を助けてください!

func textFieldShouldReturn(textField: UITextField) -> Bool { 

     if textField == self.textName{ 
      textEmail.becomeFirstResponder() 
      let desiredPosition = textEmail.beginningOfDocument 
      textEmail.selectedTextRange = textEmail.textRangeFromPosition(desiredPosition, toPosition: desiredPosition) 
     } 

     if textField == self.textEmail{ 


      dismissViewControllerAnimated(true, completion: nil) 

     } 

     return true 
    } 

メモとして、編集を試しましたが、textEmailのアクションを開始し、以下のコードを追加しましたが、どちらも機能しませんでした。

let desiredPosition = textEmail.beginningOfDocument 
      textEmail.selectedTextRange = textEmail.textRangeFromPosition(desiredPosition, toPosition: desiredPosition) 

答えて

1

代わりにこれを試してみてください:

func textFieldDidBeginEditing(_ textField: UITextField) { 
    if textField == self.textName{ 
     let beginning = textField.beginningOfDocument 
     textField.selectedTextRange = textField.textRange(from: beginning, to: beginning) 
    } 
} 

のでtextEmail.becomeFirstResponder()を削除し、代わりにtextEmail.textRangeFromPositiontextField.textRangeを使用しています。

textFieldDidBeginEditing関数の中では、上記の例のようにパラメータtextFieldを使用します。

+0

でこのメソッドをコピーのviewDidLoad

における自己

textName.delegate = self textEmail.delegate = self 

を設定した後の委任UITextFieldDelegate

を設定手動creを使用してDidBegin編集アクションを実行しました。 textFieldDidBeginEditingが機能しました。 – NKay

0

まずTOUは、TextFieldデリゲートは、私はだったあなたのViewController

func textFieldShouldReturn(textField: UITextField) -> Bool 
    { 
     if textField == textName 
     { 
      textName.resignFirstResponder() 
      textEmail.becomeFirstResponder() 
      textEmail.text = "@gmail.com" 
      let newPosition = textField.beginningOfDocument 
      textEmail.selectedTextRange = textEmail.textRangeFromPosition(newPosition, toPosition: newPosition) 



     } 
     else if textField == textEmail 
     { 
      textEmail.resignFirstResponder() 
     } 
     return true 
    } 
関連する問題