2016-10-25 3 views
0

ViewController состоит из двух текстовых полей с именем textName & textEmail. View Controller загружается с помощью курсора на textName. textName содержит предварительно заполненное слово «@ gmail.com».Курсор в начале UITextField

При попадании клавиши клавиатуры Key from textName, фокус перемещается в текстовое поле 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() и использовать textField.textRange вместо textEmail.textRangeFromPosition.

И внутри функции textFieldDidBeginEditing используйте параметр textField, как показано в моем примере выше.

+0

я был используя ручное создание ated DidBeginEditing. textFieldDidBeginEditing работал. – NKay

0

Первый тоу установить делегат UITextFieldDelegate

После того как вы TextField делегат установить Я в viewDidLoad

Пример

textName.delegate = self 
textEmail.delegate = self 

затем скопировать этот метод в 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 
    } 
Смежные вопросы